SQL日常函数长期更新

--去空格 TRIM() 
SELECT LTRIM(RTRIM(N'去空格                        '))
LTRIM --去左空格
RTRIM --去右空格 

--判断值类型
SELECT ISDATE('20200601')  --判断是否是日期 1=是;0=否
SELECT ISNUMERIC('-19555.22')  --判断是否是数字(包含小数,负数) 1=是;0=否

--@@IDENTITY  @@IDENTITY得到上一次插入记录时自动产生的ID
SELECT @@IDENTITY as Template_ID

--NEWID()生成计算机唯一不重复编码
SELECT NEWID() --多用于礼券码和唯一数据主键

--字符替换
SELECT REPLACE('2020/01-01','/', '-') 

--1、round()遵循四舍五入把原值转化为指定小数位数。
--如:round(1.45,0) = 1;round(1.55,0)=2
SELECT  ROUND(1.45, 0) AS ROUNDT
--2、CAST(159.22 AS INT)转整数去掉后面小数
SELECT  CAST(159.22 AS INT) AS CASTE

ROUNDT
---------------------------------------
1.00

(1 行受影响)

CASTE
-----------
159

(1 行受影响)

--FULL OUTER JOIN 是针对 LEFT JOIN、INNER JOIN、 RIGHT JOIN  的缺陷
--FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
--LEFT JOIN、INNER JOIN 的缺陷必须匹配主表(目标表)才能关联数据如没有匹配到就不会显示
--UNION 也只能合并相同表的结果集 场景不适用
CREATE TABLE #USER_A
    (
      Branch_Code INT NOT NULL ,
      Month_Date DATE NOT NULL ,
      Resales_Money_Target MONEY NOT NULL ,
      Create_By VARCHAR(50) NOT NULL ,
      Create_Time DATETIME2 NOT NULL ,
      Update_By VARCHAR(50) NOT NULL ,
      Update_Time DATETIME2 NOT NULL ,
      Approval_By VARCHAR(50) NOT NULL ,
      Approval_Flag SMALLINT NOT NULL ,
      Approval_Remark NVARCHAR(200) NOT NULL
    )

SELECT *FROM #USER_A

Branch_Code Month_Date Resales_Money_Target  Create_By                                          Create_Time                 Update_By                                          Update_Time                 Approval_By                                        Approval_Flag Approval_Remark
----------- ---------- --------------------- -------------------------------------------------- --------------------------- -------------------------------------------------- --------------------------- -------------------------------------------------- ------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3379        2020-04-01 397164.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)
3379        2020-05-01 476597.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)
3379        2020-06-01 365391.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)
3379        2020-07-01 381277.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)
3379        2020-08-01 593098.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)

(5 行受影响)


CREATE TABLE #INFOR_B
(
[Branch_Code] [int] NOT NULL,
[Month_Date] [date] NOT NULL,
[Resales_Money] [money] NOT NULL
)

SELECT *FROM #INFOR_B

Branch_Code Month_Date Resales_Money
----------- ---------- ---------------------
3113        2020-05-01 269565.90
3113        2020-06-01 756102.20
3113        2020-07-01 37134.80
3145        2020-05-01 2080761.48
3145        2020-06-01 2590597.88
3145        2020-07-01 137244.17
3146        2020-05-01 560768.30
3146        2020-06-01 752322.66
3146        2020-07-01 7574.50
3154        2020-05-01 492991.00

(10 行受影响)


SELECT  *
FROM    #USER_A AS RRMT
        FULL OUTER JOIN #INFOR_B AS RRM 
		               ON RRM.Branch_Code = RRMT.Branch_Code
					   AND RRM.Month_Date = RRMT.Month_Date

Branch_Code Month_Date Resales_Money_Target  Create_By                                          Create_Time                 Update_By                                          Update_Time                 Approval_By                                        Approval_Flag Approval_Remark                                                                                                                                                                                          Branch_Code Month_Date Resales_Money
----------- ---------- --------------------- -------------------------------------------------- --------------------------- -------------------------------------------------- --------------------------- -------------------------------------------------- ------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ---------- ---------------------
3379        2020-04-01 397164.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)                                                                                                                                                                                 NULL        NULL       NULL
3379        2020-05-01 476597.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)                                                                                                                                                                                 NULL        NULL       NULL
3379        2020-06-01 365391.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)                                                                                                                                                                                 NULL        NULL       NULL
3379        2020-07-01 381277.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)                                                                                                                                                                                 NULL        NULL       NULL
3379        2020-08-01 593098.00             10039069                                           2020-06-29 20:05:05.4970000 10039069                                           2020-06-29 20:05:05.4970000 10039069                                           1             0629批量导入西北区分店再消费目标(6月初版)                                                                                                                                                                                 NULL        NULL       NULL
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3113        2020-05-01 269565.90
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3113        2020-06-01 756102.20
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3113        2020-07-01 37134.80
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3145        2020-05-01 2080761.48
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3145        2020-06-01 2590597.88
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3145        2020-07-01 137244.17
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3146        2020-05-01 560768.30
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3146        2020-06-01 752322.66
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3146        2020-07-01 7574.50
NULL        NULL       NULL                  NULL                                               NULL                        NULL                                               NULL                        NULL                                               NULL          NULL                                                                                                                                                                                                     3154        2020-05-01 492991.00

(15 行受影响)

--添加字段
ALTER TABLE 表名
ADD 字段名字  NVARCHAR(200) DEFAULT NULL;  
EXECUTE sp_addextendedproperty 'MS_Description', '字段注释', 'user', 'dbo',
    'table', '表名', 'column', '字段名';

CREATE TABLE [dbo].[EXTERNALURL](
	[TXN_CODE] [VARCHAR](50) NOT NULL,
	[MEANING_EN] [VARCHAR](50) NOT NULL,
	[MEANING_ZH] [VARCHAR](50) NULL,
	[EXTERNAL_URL] [NVARCHAR](200) NULL,
 CONSTRAINT [PK_SY_S_EXTERNALURL] PRIMARY KEY CLUSTERED 
(
	[TXN_CODE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'菜单代码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'EXTERNALURL', @level2type=N'COLUMN',@level2name=N'TXN_CODE'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'程序名称EN' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'EXTERNALURL', @level2type=N'COLUMN',@level2name=N'MEANING_EN'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'程序名称ZH' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'EXTERNALURL', @level2type=N'COLUMN',@level2name=N'MEANING_ZH'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'程序URL 不带ip' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'EXTERNALURL', @level2type=N'COLUMN',@level2name=N'EXTERNAL_URL'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'外部链接表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'EXTERNALURL'
GO

--循环一张表的数据
DECLARE @COUNTCODE INT;--总行数
DECLARE @TXN_CODE VARCHAR(30);
DECLARE @SUB_SYSTEM NVARCHAR(50)= 'RESOURCETRACKING';
DECLARE @RELATIVE_URL NVARCHAR(200)= '/ResourceTracking/ExternalUrl/index';
DECLARE @MODULE_CODE VARCHAR(30)= '01. Resource Tracking';
DECLARE @CREATOR VARCHAR(25)= 'danqiyang';
DECLARE @TXN_GROUP NVARCHAR(200)= 'ADMIN_TXN,IT_USER_TXN';
DECLARE @MEANING_EN VARCHAR(200);
DECLARE @MEANING_ZH NVARCHAR(200);
DECLARE @EXTERNAL_URL NVARCHAR(200);

--加索引
IF OBJECT_ID('tempdb..#Tpme') IS NOT NULL
    DROP TABLE #Tpme;
SELECT  ROW_NUMBER() OVER ( ORDER BY TXN_CODE ) - 1 RN ,
        *
INTO    #Tpme
FROM    [EXTERNALURL];
     
SELECT  @COUNTCODE = COUNT([TXN_CODE]) FROM   [EXTERNALURL];

DECLARE @i INT = 0; 
WHILE @i < @COUNTCODE
    BEGIN
        SELECT  @TXN_CODE = TXN_CODE ,
                @MEANING_EN = MEANING_EN ,
                @MEANING_ZH = MEANING_ZH ,
                @EXTERNAL_URL = EXTERNAL_URL
        FROM    #Tpme
        WHERE   RN = @i;

		--循环执行SP
        EXEC dbo.SP_IT_TOOLS_CREATE_MENU @TXN_CODE, @SUB_SYSTEM, @RELATIVE_URL,
            @MODULE_CODE, @CREATOR, @TXN_GROUP, @MEANING_EN, @MEANING_ZH,
            @EXTERNAL_URL;

        --PRINT ( @MEANING_EN );
        SET @i = @i + 1;
    END;

--查询包含某字段的所有表
SELECT  OBJECT_NAME(id) objName ,
        name AS colName
FROM    syscolumns
WHERE   ( name LIKE '%OPERATION%' )
        AND id IN ( SELECT  id
                    FROM    sysobjects
                    WHERE   xtype = 'u' )
ORDER BY objName;

--当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'table_name' 中的标识列插入显式值。
--执行插入语句,报错。
--“当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘orders’ 中的标识列插入显式值。”
先运行“SET IDENTITY_INSERT 表名 ON”,再运行你的插入语句,再执行“SET IDENTITY_INSERT 表名 OFF”就可以了。
例如:
SET IDENTITY_INSERT OrderList ON–打开
SET IDENTITY_INSERT OrderList OFF–关闭
保留两位小数,带0
ISNULL(CAST(Ith_25 AS DECIMAL(9, 2)), '0.00')


DROP TABLE lOG_NOTE
CREATE TABLE lOG_NOTE(
	ID [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	INTERFACE [VARCHAR](50) NOT NULL,
	URL [VARCHAR](50) NOT NULL,
	REQUEST [NVARCHAR](MAX) NOT NULL,
	REQUEST_TIME [DATETIME] NOT NULL,
	LENGTH_TIME [BIGINT] NOT NULL,
	STATUS  [NVARCHAR](10) NOT NULL,
	REPONSE [NVARCHAR](MAX) NOT NULL,
	IP [VARCHAR](30) NOT NULL,
	ERROR [NVARCHAR](MAX) 
)
EXECUTE sp_addextendedproperty N'MS_Description','接口日志记录表',N'user',N'dbo',N'table',N'lOG_NOTE',NULL,NULL

EXECUTE sp_addextendedproperty N'MS_Description','自增ID',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'ID'
EXECUTE sp_addextendedproperty N'MS_Description','接口',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'INTERFACE'
EXECUTE sp_addextendedproperty N'MS_Description','请求地址',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'URL'
EXECUTE sp_addextendedproperty N'MS_Description','请求内容',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'REQUEST'
EXECUTE sp_addextendedproperty N'MS_Description','请求时间',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'REQUEST_TIME'
EXECUTE sp_addextendedproperty N'MS_Description','消耗时长(MS)',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'LENGTH_TIME'
EXECUTE sp_addextendedproperty N'MS_Description','状态',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'STATUS'
EXECUTE sp_addextendedproperty N'MS_Description','响应内容',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'REPONSE'
EXECUTE sp_addextendedproperty N'MS_Description','服务执行地址',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'IP'
EXECUTE sp_addextendedproperty N'MS_Description','异常信息',N'user',N'dbo',N'table',N'lOG_NOTE',N'column',N'ERROR'
-- 创建复合索引
CREATE INDEX IX_LOG_INTERFACE_TIME
	ON lOG_NOTE(INTERFACE,REQUEST_TIME)  

行转列
CREATE TABLE [dbo].[TARGET_CONFIG]
(
[PROJ_CODE] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PRODUCT_CODE] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PRODUCT_NAME] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[PRODUCT_SEQ] [int] NULL,
[PROCESS_ID] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PROCESS_NAME] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[PROCESS_SEQ] [int] NULL,
[PROCESS_DESC] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[PROCESS_TYPE] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL,
[TARGET_VALUE] [decimal] (10, 2) NULL,
[TARGET_TIME] [date] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TARGET_CONFIG] ADD CONSTRAINT [PK_TARGET_CONFIG] PRIMARY KEY CLUSTERED ([PROJ_CODE], [PRODUCT_CODE], [PROCESS_ID], [TARGET_TIME]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PROJ_CODE] ON [dbo].[TARGET_CONFIG] ([PROJ_CODE]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PRODUCT_CODE] ON [dbo].[TARGET_CONFIG] ([PRODUCT_CODE]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PROCESS_ID] ON [dbo].[TARGET_CONFIG] ([PROCESS_ID]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_TARGET_TIME] ON [dbo].[TARGET_CONFIG] ([TARGET_TIME]) ON [PRIMARY]
GO



INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 8553.00, '2023-10-01');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 8553.00, '2023-10-02');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 8553.00, '2023-10-03');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 8553.00, '2023-10-04');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 8553.00, '2023-10-05');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-06');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-07');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-08');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-09');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-10');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-11');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-12');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-13');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-14');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-15');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-16');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-17');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-18');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-19');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-20');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-21');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-22');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-23');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-24');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-25');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-26');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-27');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-28');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-29');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-30');
INSERT INTO DASHBOARD.dbo.TARGET_CONFIG
(PROJ_CODE, PRODUCT_CODE, PRODUCT_NAME, PRODUCT_SEQ, PROCESS_ID, PROCESS_NAME, PROCESS_SEQ, PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME)
VALUES(N'NCCSAP', N'LDU1_ADV2', N'ALDAN_V2_LDU1', 1, N'LD_BOND_SUBMOUNT', N'LD_BOND_SUBMOUNT', 2, N'LD_BOND_PROD', N'ASSEMBLY', 9540.00, '2023-10-31');


DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);

-- 获取所有不重复的TARGET_TIME值
SELECT @columns = STUFF((SELECT DISTINCT ',' + QUOTENAME(TARGET_TIME)
                         FROM TARGET_CONFIG WHERE PROJ_CODE='NCCSAP' AND MONTH(TARGET_TIME) = MONTH(GETDATE()) AND YEAR(TARGET_TIME) = YEAR(GETDATE())
                         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '');
-- 构建动态SQL查询语句
SET @sql = N'
SELECT PROCESS_DESC, PROCESS_TYPE, ' + @columns + '
FROM
(
  SELECT PROCESS_DESC, PROCESS_TYPE, TARGET_VALUE, TARGET_TIME
  FROM TARGET_CONFIG
) AS SourceTable
PIVOT
(
  MAX(TARGET_VALUE)
  FOR TARGET_TIME IN (' + @columns + ')
) AS PivotTable;';

-- 执行动态SQL查询
EXEC sp_executesql @sql;



SQL Server排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)

在这里插入图片描述
1、 ROW_NUMBER
Row_number的用途非常广泛,排序最好用他,一般可以用来实现web分页,他会为查询出来的每一页记录生成一个序号,依次排序且不重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。
例如:

select ROW_NUMBER() OVER(order by salse desc) as row_num,* from rank1

在这里插入图片描述
over子句中根据datatime降序排列,Sql语句则按salse降序排列
例如:

select ROW_NUMBER() OVER(order by [datatime] desc) as row_num,* from rank1 order by [salse] desc

在这里插入图片描述
利用row_number可以实现web程序分页,我们来查询指定范围的表数据。
例如:

with orderSection as
(
select ROW_NUMBER() OVER(order by salse desc) rownum,* from rank1
)
select * from [orderSection] where rownum between 5 and 8 order by salse desc

在这里插入图片描述

下面我们写一个例子来证实这一点,将上面Sql语句中的排序字段由salse改为datatime。
例如:

with orderSection as
(
select ROW_NUMBER() OVER(order by salse desc) rownum,* from rank1
)
select * from [orderSection] where rownum between 5 and 8 order by datatime desc

在这里插入图片描述
2、 RANK
rank函数用于返回结果集的分区内每行的排名, 行的排名是相关行之前的排名数加一。简单来说rank函数就是对查询出来的记录进行排名,与row_number函数不同的是,rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个,也就是相关行之前的排名数加一,可以理解为根据当前的记录数生成序号,后面的记录依此类推。
例如:

select RANK() OVER(order by [salse]) as rank,* from rank1

在这里插入图片描述
3、DENSE_RANK
dense_rank函数的功能与rank函数类似,dense_rank函数在生成序号时是连续的,而rank函数生成的序号有可能不连续。dense_rank函数出现相同排名时,将不跳过相同排名号,rank值紧接上一次的rank值。在各个分组内,rank()是跳跃排序,有两个第一名时接下来就是第四名,dense_rank()是连续排序,有两个第一名时仍然跟着第二名。将上面的Sql语句改由dense_rank函数来实现
例如:

select DENSE_RANK() OVER(order by [salse]) as den_rank,* from rank1

在这里插入图片描述
4、NTILE
ntile函数可以对序号进行分组处理,将有序分区中的行分发到指定数目的组中。 各个组有编号,编号从一开始。 对于每一个行,ntile 将返回此行所属的组的编号。这就相当于将查询出来的记录集放到指定长度的数组中,每一个数组元素存放一定数量的记录。ntile函数为每条记录生成的序号就是这条记录所有的数组元素的索引(从1开始)。也可以将每一个分配记录的数组元素称为“桶”。
例如:

select NTILE(4) OVER(order by salse desc) as ntile,* from rank1

在这里插入图片描述
总结:
在使用排名函数的时候需要注意以下三点:
  1、排名函数必须有 OVER 子句。
  2、排名函数必须有包含 ORDER BY 的 OVER 子句。
  3、分组内从1开始排序。

Sqlsever 动态行转列

--表数据
CREATE TABLE #temptable ( [PROJ_CODE] varchar(50), [EQUIPMENT_GROUP] varchar(50), [TESTER] varchar(50), [OEE] decimal(38,4), [DATE] date )
INSERT INTO #temptable
VALUES
( 'NCCSAD', 'FLIP_TOSA_AA', 'FLIP_TOSA_AA_34', 0.8928, N'2024-03-02T00:00:00' ), 
( 'NCCSAD', 'FLIP_TOSA_AA', 'FLIP_TOSA_AA_34', 0.8116, N'2024-03-01T00:00:00' ), 
( 'NCCSAP', 'FLIP_TOSA_AA', 'FLIP_TOSA_AA_34', 0.0255, N'2024-03-01T00:00:00' )

--DROP TABLE #temptable

DATE 多行
在这里插入图片描述
实现方式一

--动态的列名
DECLARE @cols AS NVARCHAR(MAX);
--拼接 sql 
DECLARE @query AS NVARCHAR(MAX);

--拼接动态列名
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(DATE) 
            FROM #temptable
            WHERE DATE >= '2024-03-01' AND DATE <= '2024-03-31'
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'');

PRINT @cols

--拼接sql
SET @query = 'SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, ' + @cols + ' 
            FROM 
            (
                SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, OEE, DATE
                FROM #temptable
                WHERE DATE >= ''2024-03-01'' AND DATE <= ''2024-03-31''
           ) x
            PIVOT 
            (
                MAX(OEE)
                FOR DATE IN (' + @cols + ')
            ) p ';

EXECUTE(@query);

在这里插入图片描述

实现方式二

--动态的列名
DECLARE @cols NVARCHAR(MAX) = '';
--拼接 sql 
DECLARE @query NVARCHAR(MAX);


SELECT @cols += QUOTENAME(DATE) + N','
FROM #temptable
WHERE DATE >= '2024-03-01'
      AND DATE <= '2024-03-31'
GROUP BY DATE
ORDER BY DATE;
PRINT @cols

--去掉最后一个 逗号
SET @cols = LEFT(@cols, LEN(@cols) - 1);

--拼接sql
SET @query = '
SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, ' + @cols + ' 
FROM 
(
    SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, OEE, DATE
    FROM #temptable
    WHERE DATE >= ''2024-03-01'' AND DATE <= ''2024-03-31''
	AND TESTER =''FLIP_TOSA_AA_34''
) x
PIVOT 
(
    MAX(OEE)
    FOR DATE IN (' + @cols + ')
) p ';

EXECUTE(@query);

以上有一个问题,就是数据源根本没有 相关日期的数据,那么转换后显示的是0,
需要再加一列

--动态的列名
DECLARE @cols NVARCHAR(MAX) = '';
DECLARE @cols1 NVARCHAR(MAX) = '';
--拼接 sql 
DECLARE @query NVARCHAR(MAX);

SELECT @cols += 'ISNULL(' + QUOTENAME(DATE) + ', 0) AS ' + QUOTENAME(DATE) + ',' 
FROM #temptable
WHERE DATE >= '2024-03-01'
      AND DATE <= '2024-03-31'
GROUP BY DATE
ORDER BY DATE;
PRINT @cols
SET @cols = LEFT(@cols, LEN(@cols) - 1);

SELECT @cols1 += QUOTENAME(DATE) + N','
FROM #temptable
WHERE DATE >= '2024-03-01'
      AND DATE <= '2024-03-31'
GROUP BY DATE
ORDER BY DATE;
PRINT @cols1
SET @cols1 = LEFT(@cols1, LEN(@cols1) - 1);
--去掉最后一个 逗号

--拼接sql
SET @query = '
SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, ' + @cols + ' 
FROM 
(
    SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, ISNULL(OEE, 0) AS OEE, DATE
    FROM #temptable
    WHERE DATE >= ''2024-03-01'' AND DATE <= ''2024-03-31''
	AND TESTER =''FLIP_TOSA_AA_34''
) x
PIVOT 
(
    MAX(OEE)
    FOR DATE IN ('+@cols1+')
) p ';

EXECUTE(@query);

在这里插入图片描述

DROP TABLE #temptable;
CREATE TABLE #temptable
(
    [PROJ_CODE] VARCHAR(50),
    [EQUIPMENT_GROUP] VARCHAR(50),
    [TESTER] VARCHAR(50),
    [OEE] DECIMAL(38, 4),
    [DATE] VARCHAR(10)
);
INSERT INTO #temptable
VALUES
('NCCSAD', 'FLIP_TOSA_AA', 'FLIP_TOSA_AA_34', 0.8928, '2024-03-02'),
('NCCSAD', 'FLIP_TOSA_AA', 'FLIP_TOSA_AA_34', 0.8116, '2024-03-01'),
('NCCSAP', 'FLIP_TOSA_AA', 'FLIP_TOSA_AA_34', 0.0255, '2024-03-01');
--DROP TABLE #temptable


SELECT *  FROM #temptable WHERE  TESTER ='FLIP_TOSA_AA_34'

DECLARE @cols AS NVARCHAR(MAX)
DECLARE @valuekey AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX);

SELECT @valuekey = STUFF(
(
SELECT N',ISNULL(['+[DATE]+'], 0) AS '+ QUOTENAME([DATE])
FROM #temptable
GROUP BY [DATE]
ORDER BY [DATE]
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),1,1,''),
@cols=STUFF(
(
SELECT ',' + QUOTENAME([DATE])FROM #temptable
GROUP BY [DATE]
ORDER BY [DATE]
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),1,1,'');
--PRINT @valuekey;
--PRINT @cols;

--拼接sql
SET @query = '
SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, ' + @valuekey + ' 
FROM 
(
    SELECT PROJ_CODE, EQUIPMENT_GROUP, TESTER, ISNULL(OEE, 0) AS OEE, DATE
    FROM #temptable
    WHERE DATE >= ''2024-03-01'' AND DATE <= ''2024-03-31''
) x
PIVOT 
(
    MAX(OEE)
    FOR DATE IN (' + @cols + ')
) p ';
PRINT @query
EXECUTE(@query);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值