【发布时间】:2013-07-21 03:47:55
【问题描述】:
使用 STUFF 函数执行 SQL Pivot 动态列但没有得到我想要的结果
这里是 SQL Fiddle http://sqlfiddle.com/#!3/241c2/6/0
我可以做些什么来摆脱所有的 null\empty 单元格?
我希望结果显示是这样的,每列显示每个学生分配到的班级列表,而不是一堆空白单元格
汤姆哈里玛丽苏保罗 代数 代数 代数 代数 几何 法国 法国 西班牙 西班牙 艺术 生物学 物理学 物理学 生物学编辑:请求在此处显示代码:
create table clsassin
(
ClassID int,
AssignID int,
ClsNm varchar(10),
StudntNm varchar(10),
)
insert into clsassin values (1, 1, 'Algebra', 'Tom')
insert into clsassin values (1, 2, 'Algebra', 'Harry')
insert into clsassin values (1, 3, 'Algebra', 'Mary')
insert into clsassin values (1, 4, 'Algebra', 'Sue')
insert into clsassin values (2, 5, 'Geometry', 'Paul')
insert into clsassin values (3, 6, 'French', 'Harry')
insert into clsassin values (3, 7, 'French', 'Tom')
insert into clsassin values (4, 8, 'Spanish', 'Mary')
insert into clsassin values (4, 9, 'Spanish', 'Sue')
insert into clsassin values (5, 10, 'Art', 'Paul')
insert into clsassin values (6, 11, 'Biology', 'Tom')
insert into clsassin values (6, 12, 'Biology', 'Paul')
insert into clsassin values (7, 13, 'Physics', 'Harry')
insert into clsassin values (7, 14, 'Physics', 'Sue')
insert into clsassin values (8, 15, 'History', 'Sue')
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(StudntNm)
FROM clsassin
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + ' from
(
select StudntNm, ClsNm
, ClassID
from clsassin
) x
pivot
(
min(ClsNm)
for StudntNm in (' + @cols + ')
) p '
execute(@query)
【问题讨论】:
-
请将您的代码添加到问题正文中,不鼓励严重依赖第三方链接。链接可能会失效,让您的问题无法回答
标签: sql pivot dynamic-columns