- ベストアンサー
複数の列を行に変換するSELECT文は?
- テーブルtb1の複数の列を行に変換するためのSELECT文を求めています。
- tb1の設計が改善されていない状況で、以下のような結果を取得したいです。
- idと各駅名を組み合わせて、列の値がnullでない行を取得するSELECT文を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
この構造はとても集計する気があるとは思えませんが、 unionすればできないことはないでしょう select id,region,null as station,0 as sort from tb1 union select id,region,station1,1 from tb1 where not station1 is null union select id,region,station2,2 from tb1 where not station2 is null union select id,region,station3,3 from tb1 where not station3 is null union select id,region,station4,4 from tb1 where not station4 is null union select id,region,station5,5 from tb1 where not station5 is null order by id,sort
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
>sort列は取得しないようにできますか・・・? サブクエリにいれてしまえばよいでしょう select id,region,station from( select id,region,null as station,0 as sort from tb1 union select id,region,station1,1 from tb1 where not station1 is null union select id,region,station2,2 from tb1 where not station2 is null union select id,region,station3,3 from tb1 where not station3 is null union select id,region,station4,4 from tb1 where not station4 is null union select id,region,station5,5 from tb1 where not station5 is null ) as sub order by id,sort
お礼
ありがとうございます! できました! 助かりました!!
お礼
ありがとうございます!うまくできました!! ついでですが、sort列は取得しないようにできますか・・・? 取得した結果をcsvに出力するのですが、sort列もcsvに出力されてしまうのです・・・。