[英]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.