使用 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)