実現したいこと
SQLで行を表に変換したい(この表現あってますか?)
この表現で合っているかわかりませんが、以下のようなことをやりたいです。
XXテーブル
user_id | A-1 | A-2 | B-1 | B-2 |
---|---|---|---|---|
10001 | テニス | 1 | 野球 | 2 |
10002 | サッカー | 4 | バスケ | 7 |
10003 | バドミントン | 3 | 陸上 | 3 |
このようなXXテーブルから、
セレクト結果
A | B | C |
---|---|---|
10001 | テニス | 1 |
10001 | 野球 | 2 |
10002 | サッカー | 4 |
10002 | バスケ | 7 |
10003 | バドミントン | 3 |
10003 | 陸上 | 3 |
このようにセレクトしたいです。
UNIONを利用して、上記の処理ができることは確認していますが、
興味でUNION以外の方法でもできるのかを知りたいと考えています。
function等でできるならばその方法を教えていただけると幸いです。
試したこと
SQL
1SELECT user_id, A-1, A-2 FROM XXテーブル 2UNION ALL 3SELECT user_id, B-1, B-2 FROM XXテーブル
このようなunionを利用したクエリで取得できることは確認しています。
補足
- postgresql9.4 で確認
- テーブル設計は変更できないこととさせてください
回答3件
あなたの回答
tips
プレビュー