11.1. 列変換 - 通常
次のような生徒の成績表 (CJ) があるとします
名前 科目 結果
Zhang San 中国語 80
Zhang San 数学 90
Zhang San 物理学 85
リーSi 中国語 85
Li Si 数学 92
Li Si 物理学 82
なりたい
名前 中国語数学物理学
Zhang San 80 90 85
Li Si 85 92 82
@sql varchar(4000) を宣言します
set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select unique CJ の件名) として
select @sql = @sql+' from test group by name'
exec(@sql)
11.2. 行と列の変換 -- マージ
にはテーブル A、
id pid があります
1 1
1 2
1 3
2 1
2 2
3 1
テーブルBの作成方法:
id pid
1 1,2,3
2 1,2
3 1
マージ関数を作成する
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str =''