如何在动态SQL创建一个简单的数据透视表数据如下:简单的数据透视表与月和文本数据动态SQL
ID Month AssignmentMonth Designation
1 5 May Joe Blow
2 5 May Available
3 5 May Available
4 5 May Available
5 6 June Carry over
6 6 June Christopher Freeberg
7 6 June Ringo Starr
8 6 June Robert L Testcustomer
9 7 July Carry over
10 7 July Carry over
11 7 July Carry over
12 7 July Carry over
13 8 August Available
14 8 August Carry over
15 8 August Carry over
16 8 August Carry over
所以当它完成它看起来像下面的例子:
May June July August
Joe Blow Carry Over Carry over Available
Available Christopher Freeburg Carry over Carry over
Available Ringo Starr Carry over Carry over
Available Robert L Testcustomer Carry over Carry over
这是我的尝试,但它确实产生了正确的结果。它只返回一行。
August July June May
Carry over Carry over Robert L Testcustomer Joe Blow
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(AssignmentMonth)
from @CardAssigns
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @query = 'WITH PivotData AS
(
SELECT Designation, AssignmentMonth
FROM #Temp1
)
SELECT '+ @cols +'
FROM PivotData
PIVOT
(
MAX(Designation)
FOR AssignmentMonth
IN ('+ @cols +')
) as PIVOTResult'
EXECUTE(@query)
非常感谢。 –