簡體   English   中英

SQL Pivot動態列

[英]SQL Pivot Dynamic Columns

我有一個查詢,可為特定課程的學習者生成結果,顯示他們是否已完成模塊。 學習者可以采用不同的模塊。

SELECT LearnerID, 
       UnitID, 
       CASE WHEN (SUM(Total - [Total Achieved])) = 0 THEN 'Yes' ELSE 'No' END AS Completed 
FROM  dbo.LMS_Achieved_Standards_Report 
GROUP BY CourseID, LearnerID, UnitID

結果看起來像這樣

LearnerID  UnitID  Completed
15      15        Yes
15      28        No
28      28        Yes
116     150       Yes
79      12        No
69      34        Yes
69      15        No

我需要它看起來像這樣:

LearnerID     Unit 15  Unit 28  Unit 150  Unit 12  Unit 34
15              Yes      No
28                       Yes
116                               Yes
79                                          Yes
69              No                                   Yes

如前所述,另一個因素是它們都可以采用不同的單位,因此我無法使用設置的列標題創建PIVOT。

有任何想法嗎?

嘗試這個;

    select * into #tbl from (select 'cust1' as key1,    'Red'as Type
union select 'cust1' as key1,   'Blue'as Type
union select 'cust1' as key1,   'Yellow'as Type
union select 'cust2' as key1,   'Red'as Type
union select 'cust2' as key1,   'Blue'as Type
union select 'cust2' as key1,   'Green'as Type) as dd

declare @strsql as nvarchar(max)
declare @columns as nvarchar(max)

set @columns = (select stuff((select distinct ',['+Type+']' from #tbl FOR XML PATH('')),1,1,''))
set @strsql =  'select key1,'+@columns + 'from (select * from #tbl) as p pivot (count(p.Type) For p.Type in ('+@columns+'))as pivottable'
--set @strsql = 'select 
EXECUTE sp_executesql @strsql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM