STUFF関数を使用してSQLピボット動的列を実行していますが、希望する結果が得られません
これがSQL Fiddle http://sqlfiddle.com/#!3/241c2/6/0です
null\空のセルをすべて取り除くにはどうすればよいですか?
結果の表示を次のようにしたいと思います。各列には、各学生が割り当てられているクラスのリストが表示され、空白のセルがたくさんありません
トム・ハリー メアリー・スー・ポール 代数 代数 代数 代数 幾何学 フランス語 フランス語 スペイン語 スペイン語 芸術 生物学 物理学 物理学 生物学
編集:ここにコードを表示するように要求されました:
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)