複数の列を行に変換するSELECT文は?

このQ&Aのポイント
  • テーブルtb1の複数の列を行に変換するためのSELECT文を求めています。
  • tb1の設計が改善されていない状況で、以下のような結果を取得したいです。
  • idと各駅名を組み合わせて、列の値がnullでない行を取得するSELECT文を教えてください。
回答を見る
  • ベストアンサー

このようなテーブルを取得するSELECT文は?

テーブルtb1が以下のようになっているとします id, region, station1, station2, station3, station4, station5 0, 東京, 池袋駅, 渋谷駅, null, 新宿駅, null 1, 横浜, null, 横浜駅, 戸塚駅, 菊名駅, 反町駅 2, 大阪, 梅田駅, 天満駅, 野田駅, null, null このようなテーブルを、以下のような結果として取得するSELECT文はどのようになるのでしょうか? 0, 東京, 0, 東京, 池袋駅 0, 東京, 渋谷駅 0, 東京, 新宿駅 1, 横浜, 1, 横浜, 横浜駅 1, 横浜, 戸塚駅 1, 横浜, 菊名駅 1, 横浜, 反町駅 2, 大阪, 2, 大阪, 大阪駅 2, 大阪, 梅田駅 2, 大阪, 野田駅 複数の列を行にするのがわかりません。 そもそも、tb1の設計が良くないのですが、これは変えられないと先方に言われました。 どうぞよろしくお願い致します。

  • suffre
  • お礼率76% (2013/2633)
  • MySQL
  • 回答数2
  • ありがとう数12

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

この構造はとても集計する気があるとは思えませんが、 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

suffre
質問者

お礼

ありがとうございます!うまくできました!! ついでですが、sort列は取得しないようにできますか・・・? 取得した結果をcsvに出力するのですが、sort列もcsvに出力されてしまうのです・・・。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>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

suffre
質問者

お礼

ありがとうございます! できました! 助かりました!!

関連するQ&A

  • 東京と大阪の違い

    (1)大都市は数や規模はほとんど変わらない 東京→新宿、渋谷、池袋 大阪→梅田、難波→心斎橋 (2)東京は都内はあらゆるところが堺筋線規模 なんか間違ってます?

  • 神奈川県・東京都の図書館を探しています。

    来月から横浜市の自宅から新宿区の高等学校に通学する新高1年です。 自宅からの距離があるため、学校帰りに電車で通過する駅から近い(徒歩15分以内)図書館に寄り、そこで勉強しようと考えております。 JR横浜線鴨居駅から菊名駅。東急東横線の菊名駅から渋谷駅。JR山手線渋谷駅から新宿駅。京王新線で新宿から初台へ。 このルートの中で駅から近い図書館があれば、教えてもらいたいです。 定期の都合上、この他の線や駅によることは出来ません。 よろしくお願いします。

  • 埼玉から新横浜駅への行き方

    湘南新宿ライン一本で横浜駅まで行けるので、横浜駅から横浜市営地下鉄に乗り換えて新横浜駅まで行こうと思っていたのですが、JR横浜駅から地下鉄のりばまでかなり歩くと聞いて迷っています。 地下鉄を利用せずに、渋谷で乗り換えて菊名まで行って・・・というルートで行った方が楽でしょうか? ちなみに横浜アリーナへ行きます。

  • JR池袋から東横線反町までの直通切符

    を池袋駅で買えるでしょうか? 東横線の回数券は降車駅がの先の駅で降りた場合には差額だけ払えばいいのでしょうか? 例えば渋谷-菊名の回数券で渋谷-横浜した場合 (渋谷-横浜の料金)-(渋谷-菊名の料金)を払えばいいのでしょうか?

  • SQL文で複数列の更新をしたい。

    SQL初心者です。 全レコードを対象にNULLが入ってるフィールドを半角スペースに更新したいのですが、SQL文で記述するにはどうしたらいいのでしょうか? 例えば 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111  NULL    A 佐藤 新宿  NULL      19450412  NULL 鈴木 池袋  03-1234-2222  19700522  B            ↓ 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111        A 佐藤 新宿          19450412   鈴木 池袋  03-1234-2222  19700522  B こんな感じです。 知恵をお貸しください。よろしくお願いいたします。

  • 昼行の高速バスについて

    JR以外で昼行きの高速バスはありますか?利用区間は横浜-大阪です。東京or新宿or池袋-梅田or難波or天王寺とかでもいいですが

  • 東京,大阪の対比について

    東京,大阪を対比したが下記で合う? 丸の内 ≒ 本町 品川 ≒ 福島 渋谷 ≒ 難波 新宿 ≒ 梅田 池袋 ≒ 天王寺 上野 ≒ 京橋 http://wpedia.goo.ne.jp/smp/wiki/%E6%A2%85%E7%94%B0

  • 池袋から小机

    池袋から横浜の日産スタジアムに行こうと思い調べたら 東横線菊名乗換えが出てきました。 湘南新宿ラインで横浜まで行って横浜線に乗り換えた方が 早いように思えるのですが、横浜線は横浜では 乗換えられないのでしょうか?

  • JR山手線6大駅の次に知名度の高い駅は?

    こんにちは。山手線で6大駅(東京・品川・渋谷・新宿・池袋・上野)の 次に知名度が高い駅はどこだと思われますか? 私は、新橋だと思います。 又、上記6大駅の中で知名度の高い順に並べるとどうなると考えます? 私は、 東京、新宿、渋谷、上野、池袋、品川の順だと思います。 皆様の意見もお聞かせください。

  • 池袋から横浜への通勤経路

    6月頭ごろから横浜勤務になりそうなのですが、定期を買うのに電車通勤の経路で迷っています(4月に東京へきたばかりです)。 経路は、池袋→[湘南新宿ライン]→横浜か、池袋→[山手線]→渋谷→[等級東横線]→横浜が無難かなと思っています。 質問としては、 池袋(実際は自宅最寄駅)から横浜までの定期を買った場合、上記の2つの経路どちらでも使えるかを教えていただきたいです。 また、池袋~横浜で他にベストな経路がある場合は教えていただきたいです。よろしくお願い致します。