對於動態樞軸與非鮮明/重複Colums
現在,這將轉向或壓縮的列數。例如,如果AMID只有一個ActionTypeID,則無論ActionTypeID如何,這些值都將顯示在第1列和第2列中。這將是一個小問題/容易使列不同,因此「寬」
Declare @SQL varchar(max) = Stuff((Select ',' + QuoteName(concat(Col,'A')) + ',' + QuoteName(concat(Col,'T'))
From (
Select Distinct Col=1000+Dense_Rank() over (Partition By AMID Order By ActionTypeID)
From #PersonNote
) A
Order by 1
For XML Path('')),1,1,'')
Select @SQL = '
Select [YAxis] as [AMID],' + replace(replace(@SQL,'A]','A] as [ActionTypeID]'),'T]','T] as [Total]') + '
From (
Select YAxis = AMID
,XAxis = B.XAxis
,Value = B.Value
From (
Select AMID
,ActionTypeID
,XAxis = 1000+Dense_Rank() over (Partition By AMID Order By ActionTypeID)
,Value=COUNT(*)
From #PersonNote
Group By AMID, ActionTypeID
) A
Cross Apply (values (concat(A.XAxis,''A''),A.ActionTypeID)
,(concat(A.XAxis,''T''),A.Value)
) B (XAxis,Value)
) A
Pivot (sum(Value) For [XAxis] in (' + @SQL + ')) p'
--Print @SQL
Exec(@SQL);
返回
![enter image description here](https://i.stack.imgur.com/iQExD.jpg)
使用下面的測試數據
Create Table #PersonNote (AMID int,ActionTypeID int)
Insert Into #PersonNote values
(1,12),(1,12),(1,12),(1,12),(1,12),(1,12),(1,12), -- Cnt 7
(1,15),(1,15),(1,15),(1,15),(1,15),(1,15),(1,15),(1,15),(1,15), -- Cnt 9
(3,3),(3,3),(3,3), -- Cnt 3
(3,7),(3,7),(3,7),(3,7),(3,7),(3,7), -- Cnt 6
(3,12) -- Cnt 1
你知道最大數量嗎'ActionTypes'? SQL查詢返回固定數量的列。 –
有85個不同的動作類型,沒有限制多少個條目可以放入人注表 –