0

ピボットテーブルを試してみましたが、固定数の行に対してのみです。

以下の記録があります。

ID   CODE
===  ====
1    AAA
1    BBB
1    CCC
2    DDD
3    EEE
3    FFF
4    GGG
4    HHH
4    III
4    JJJ

そして、私の期待される結果は次のとおりです。

ID   CODE1  CODE2  CODE3  CODE4
===  =====  =====  =====  =====
1    AAA    BBB    CCC
2    DDD
3    EEE    FFF
4    GGG    HHH    III    JJJ

ID ごとに返される行数は固定されていないことに注意してください。カーソルはできるだけ避けたい。

4

1 に答える 1

0

ループなしでそれを行うには、ID 列などを介して人為的な行番号を追加する必要があります。スキーマを変更したくない場合は、最初にテーブル全体を一時テーブルにコピーします。(構文エラーはチェックしていませんが、おわかりいただけると思います)

alter table yourtab add seq int identity not null

select id, min_seq=min(seq) into #t from yourtab group by id

select id=max(id), code1=max(code1), code2=max(code2),
code3=max(code3), (etc) from ( select     id = yourtab.id,   
code1=case (yourtab.id-#t.min_seq) when 0 then code else null end,   
code2=case (yourtab.id-#t.min_seq) when 1 then code else null end,   
code3=case (yourtab.id-#t.min_seq) when 2 then code else null end,  
[...etc...] 
from yourtab, #t where yourtab.id = #t.id order by
yourtab.id ) as newtab
于 2016-06-01T07:22:31.287 に答える