前提・実現したいこと
SQLでのフィールドを移動させ結合した状態のテーブルの出力の実現の
考え方を知りたい。
補足情報に問題文を載せています。
正解はできていますので、正解が知りたいのではなく、他のやり方なども学びたいので、できる方法をご存じの方は、考え方を教えてください。
よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージはなし、他のやり方の考え方を知りたい。
該当のソースコード
SQL(Oracle)
1■うまくいったコード。 2SELECT A.カラム1, A.カラム2, A.カラム3, B.カラム3, C.カラム3, A.カラム4 3FORM シート A 4INNER JOIN 5シート B 6ON A.カラム1 = B.カラム1 - 1 7INNER JOIN 8シート C 9ON A.カラム1 = C.カラム1 - 2 10WHERE A.カラム2 IS NOT NULL; 11 12
試したこと
・サブクエリを作り、SELECTに入れてみたがうまくいかず。
・サブクエリを作り、JOINしようとしたがうまくいかず。
・サブクエリを作り、ROW_NUMBERで番号を割り振り「キー」に使おうとするもJOINでうまくいかず。
・UNIONを使おうとするもうまく行かず。
・VIEWやCASE文かな?とも思うもよくわからず。
上記でできるよというものがあれば、私の試行錯誤が間違っていただけかもしれませんので、そこをお知らせいただければと思います。
コードをたくさん書き過ぎて、うまくいったコードのみ上記に記載させていただいております。
補足情報(FW/ツールのバージョンなど)
■問題。以下のテーブルから更に下のテーブルの状態で参照しなさい。
A B C D
+-----+--------+--------+--------+
1| 連番 | 文字列 | 文字列 | 文字列 |
+-----+--------+--------+--------+
2| 連番 | NULL | 文字列 | NULL |
+-----+--------+--------+--------+
3| 連番 | NULL | 文字列 | NULL |
+-----+--------+--------+--------+
4| 連番 | 文字列 | 文字列 | 文字列 |
+-----+--------+--------+--------+
5| 連番 | NULL | 文字列 | NULL |
+-----+--------+--------+--------+
6| 連番 | NULL | 文字列 | NULL |
+-----+--------+--------+--------+
7| 連番 | 文字列 | 文字列 | 文字列 |
:
上記のように並んだテーブルから参照で、以下の形にする方法と考え方を教えていただきたい。
「B1」「C1」などは上のテーブルの元々の配置場所を表します。
A B C D E F
+------+-----+-----+-----+-----+-----+
1| 数字 | B1 | C1 | C2 | C3 | D1 |
+------+-----+-----+-----+-----+-----+
2| 数字 | B4 | C4 | C5 | C6 | D4 |
+------+-----+-----+-----+-----+-----+
3| 数字 | B7 | C7 | C8 | C9 | D7 |
+------+-----+-----+-----+-----+-----+
4| 数字 | B10 | C10 | C11 | C12 | D10 |
+------+-----+-----+-----+-----+-----+
5| 数字 | B13 | C13 | C14 | C15 | D13 |
+------+-----+-----+-----+-----+-----+
6| 数字 | B16 | C16 | C17 | C18 | D16 |
:
連番とは1,2,3,…と続く数字です。
元々のテーブルは
・Aカラムには1, 2, 3,…と続いてまして、
・Bカラムには名前が入っております。
・Cカラムは全て住所が入っておりますが、
1, 4, 7,…は名前の方の『都道府県名』が入っております。
2, 5, 8,…は1, 4, 7,…の名前の方の『市町村名』が入っております。
3, 6, 9,…は1, 4, 7,…の名前の方の『それ以降の住所』が入っております。
・Dカラムには年齢が入っております。
そのテーブルを
Aカラムには数字、
Bカラムには名前、
Cカラムには『都道府県名』
Dカラムには『市町村名』
Eカラムには『それ以降の住所』
Fカラムには年齢
となるように、
元々のCカラムの縦持ちの情報を横持ちにして出力するという問題です。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー