我正在使用SP中的多个标头进行数据透视。 我将日期分为3列(WLQ,TQ和FLQ)。
进行透视后的问题是该列按组显示。
示例输出为:(12-4_WLQ, 13-4_WLQ, 14-4_WLQ, 12-4_TQ, 13-4_TQ, 14-4_TQ, 12-4_FLQ, 13-4_FLQ, 14-4_FLQ)
。
我要如何按日期显示输出,例如:(12-4_WLQ, 12-4_TQ, 12-4_FLQ, 13-4_WLQ, 13-4_TQ, 13-4_FLQ, 14-4_WFLQ, 14-4_TQ, 14-4_FLQ)
这是我的代码:
ALTER PROCEDURE [dbo].[EXEC_DATETM_SP]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @startdt DATETIME, @enddt DATETIME, @QueryCol NVARCHAR(MAX), @QueryCol2 NVARCHAR(MAX), @QueryCol3 NVARCHAR(MAX)
SET @startdt = '04/12/2018'
SET @enddt = '04/17/2018'
WHILE @startdt <= @enddt
BEGIN
SET @QueryCol=isnull(@QueryCol, '')+QUOTENAME(convert(nvarchar(20), @startdt, 101)+'_WLQ')+(CASE WHEN @startdt<>@enddt THEN ',' ELSE '' END)
SET @QueryCol2=isnull(@QueryCol2, '')+QUOTENAME(convert(nvarchar(20), @startdt, 101)+'_TQ')+(CASE WHEN @startdt<>@enddt THEN ',' ELSE '' END)
SET @QueryCol3=isnull(@QueryCol3, '')+QUOTENAME(convert(nvarchar(20), @startdt, 101)+'_FLQ')+(CASE WHEN @startdt<>@enddt THEN ',' ELSE '' END)
SET @startdt = @startdt + 1
END
set @DynamicPivotQuery=
N'
select
[KT_HYOU_NAME],
[KT_KEIRO_NAME],
[KT_GUN_NO],
[TUKA_JUN],
[KT_CD],
[SG_KU_CD],
' + @QueryCol + ',
' + @QueryCol2 + ',
' + @QueryCol3 + '
from
(
SELECT * FROM V_DATEBYWLQ
)s
pivot (sum (WORK_LOT_QTY) for
[EXEC_DATETMM] in ('+@QueryCol+')) as AvgWidgetsPerDayPerEmp
pivot (sum (TARGET_QTY) for
[EXEC_DATETMN] in ('+@QueryCol2+')) as AvgWidgetsPerDayPerEmp2
pivot (sum (FIN_LOT_QTY) for
[EXEC_DATETMO] in ('+@QueryCol3+')) as AvgWidgetsPerDayPerEmp3
'
EXEC sp_executesql @DynamicPivotQuery
END
GO