
SQL文の作成方法が分からず困っています。
以下の実現はどのように行えばよろしいでしょうか?
---------------------
テーブルA:(項目)キー番号、項目No
テーブルB:(項目)キー番号、項目No1、項目No1名称、
項目No2、項目No2名称、項目No3、項目No3名称
---------------------
とします。
ここで、テーブルA、Bでキー番号が一致し、
テーブルAの項目Noで、テーブルBの項目No1~3のどれかと
一致した場合、項目名称をテーブルBより取ってきたいです。
出力する時、項目No、項目名称は1個のみ出力したいです。
項目No1~3にない場合も名称空白でそのまま出力します。
(データ例)
テーブルA:
100,1
100,4
110,5
テーブルB:
100,1,項目名1,2,項目名2,3,項目名3
110,3,項目名3,4,項目名4,5,項目名5
結果:
100,1,項目名1
100,4,(空白)
110,5,項目名5
No.1ベストアンサー
- 回答日時:
項目No1~3それぞれについてキー番号内でユニークになるように登録されているならば、
以下の方法でいいでしょう。
SELECT
a.キー番号,
a.項目No,
CASE 項目No
WHEN b.項目No1 THEN b.項目No1名称
WHEN b.項目No2 THEN b.項目No2名称
WHEN b.項目No3 THEN b.項目No3名称 END
FROM テーブルA a
LEFT OUTER JOIN テーブルB b
ON a.キー番号=b.キー番号 AND a.項目No IN (b.項目No1,b.項目No2,b.項目No3)
上記を満たさないならば、別の方法が必要です。
SELECT
a.キー番号,
a.項目No,
b.項目名称
FROM テーブルA a
LEFT OUTER JOIN
(SELECT キー番号,項目No1 項目No,項目No1名称 項目名称 FROM テーブルB
UNION
SELECT キー番号,項目No2 項目No,項目No2名称 項目名称 FROM テーブルB
UNION
SELECT キー番号,項目No3 項目No,項目No3名称 項目名称 FROM テーブルB) b
ON a.キー番号=b.キー番号 AND a.項目No=b.項目No
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
Oracle 2つのDate型の値の差を...
-
access2000:フォームで入力し...
-
Access テキスト型に対する指定...
-
エクセルVBAで5行目からオート...
-
Accessレポートで特定条件で改...
-
スティックパリティの役割
-
エクセルグラフの凡例スペース
-
BIOSでAHCIに設定したいが、項...
-
保存された情報として表示され...
-
Access又はExcelで256項目を超...
-
必須入力項目と入力必須項目
-
SUBSTRING 関数に渡した長さの...
-
どこ?
-
エクセルマクロにて最終行まで...
-
他テーブルで一致する列から名...
-
SQLでの変数の扱いについて
-
ピボットテーブルでフィルター...
-
エクセル2003で四角の中に...
-
ブラウザの「戻る」ボタンは何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
保存された情報として表示され...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
ワードで4段組みで文章を書い...
-
エクセルグラフの凡例スペース
-
Access テキスト型に対する指定...
-
SUBSTRING 関数に渡した長さの...
-
datファイルからaccessにインポ...
-
セルの右クリックで出る項目を...
-
複数のレコードを1つのレコード...
-
BIOSでAHCIに設定したいが、項...
-
Accessレポートで特定条件で改...
-
エクセルマクロにて最終行まで...
-
APN設定について教えていただけ...
-
必須入力項目と入力必須項目
-
Access又はExcelで256項目を超...
-
ORACLEでLONG項目からCHAR項目...
-
空白をそのままインポートする...
-
Accessで数値型にNULLをInsert...
おすすめ情報