2016-05-27 7 views
0

私はピボットテーブルを実行しようとしましたが、固定数の行のみを試みました。Sybase ASE Transpose不定列数の列へ

私は次のレコードがあります。

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ごとに返される行数が固定されていないことに注意してください。私は可能な限りカーソルを避けたい。

答えて

0

ループを使用せずに行うには、たとえば識別カラムなどの人為的な行番号を追加する必要があります。スキーマを変更しない場合は、最初にテーブル全体を一時テーブルにコピーします。 (構文エラーはチェックしませんでしたが、そのアイデアを得るでしょう)

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 
関連する問題