次のような操作がしたいのですが、
TestOya
t1 t2
1 A
2 B
TestKo1
k11 k12 k13
1 1 AA
1 2 BB
2 1 CC
TestKo2
k21 k22 k23
1 3 AAA
1 4 BBB
1 5 CCC
2 2 DDD
取得したい結果
t1 t2 betumei1 betumei2 betumei3
1 A 1 1 AA
1 A 1 2 BB
1 A 1 3 AAA
1 A 1 4 BBB
1 A 1 5 CCC
2 B 2 1 CC
2 B 2 2 DDD
betumei1には、k11またはk21
betumei2には、k12またはk22
betumei3には、k13またはk23
となるような結合がしたいのです。
アドバイスあれば宜しくお願いします。
No.2ベストアンサー
- 回答日時:
こんな感じでしょうか
WITH TestKo12(betumei1, betumei2, betumei3) AS (
SELECT k11, k12, k13 FROM TestKo1
UNION ALL
SELECT k21, k22, k23 FROM TestKo2
)
SELECT
t1,
t2,
betumei1,
betumei2,
betumei3
FROM TestOya
INNER JOIN TestKo12
ON t1 = betumei1
> やはり、unionを使うことでしか対応できないのでしょうか?
UNIONを使うと拙いことでもあるのでしょうか
どうしてもUNION以外で実現したいのであれば、到底お勧めできませんが・・・
WITH TestKo12(betumei1, betumei2, betumei3) AS (
SELECT
COALESCE(k11, k21),
COALESCE(k12, k22),
COALESCE(k13, k23)
FROM TestKo1
FULL OUTER JOIN TestKo2
ON NULL IS NOT NULL -- ありえない条件
)
SELECT
t1,
t2,
betumei1,
betumei2,
betumei3
FROM TestOya
INNER JOIN TestKo12
ON t1 = betumei1
二つ目は実装環境によっては期待通りの結果に成らない可能性もあります
インデントは全角スペースで入れているので、コピーして実行する場合は
半角スペースに置換して試してください
No.1
- 回答日時:
もっと丁寧に、やりたいことを説明しましょうよ。
各行を一意に識別するキーはどれで、どれとどれで結合するとか、提示されたデータだけで推測するというのは、アドバイスをしようとする側にとっても時間が掛かりますし、せっかくアドバイスしたものが質問者さん側の意図したものと違ったりということもありますし。
ここのカテゴリ通り、RDBMSはSAQL Serverですか?
バージョンは?
TestKo1表とTestKo2表をunionで繋げ、それをTestOyaとjoinすればいいのでは?
返事ありがとうございます。
RDBMSは、SQLSERVERとなります。
バージョンは、2005です。
TestOyaテーブルのt1とTestKo1のk11との等価結合、および
TestOyaテーブルのt1とTestKo2のk21との等価結合の結果を
一覧表示したいのです。
やはり、unionを使うことでしか対応できないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) IFERROR、SMALL関数について 2 2022/08/22 23:40
- 数学 確率について 8 2023/08/25 04:21
- 飲み物・水・お茶 え!これ100%、ならば買おうかな。…しかし実際は… 10 2022/09/06 20:37
- 人類学・考古学 ドローンを飛ばして間近で古墳調査をするのって、宮内庁の許可は必要なのかな? 5 2023/03/04 09:07
- その他(自転車) この自転車用ヘルメット、安全なヘルメットではないですか。 10 2023/04/16 07:34
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- メディア・マスコミ 毎日放送 病院の確認2時間前、安倍晋三元首相「死亡」報道 2 2022/07/08 21:01
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- 政治 立民が党所属議員を調査へ 旧統一教会との関わりについて……統一教会との関係の調査だけでいいのかな? 4 2022/07/25 17:50
- 猫 『CATCH ME IF YOU CAN 2』を買ったよ。 1 2023/06/22 09:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定条件でWHERE句の条件を変更...
-
差し込み後、元データを変更し...
-
SELECT 文 GROUP での1件目を...
-
for whichの使い方
-
SQLで特定の項目の重複のみを排...
-
エクセルで最後の文字だけ置き...
-
外部参照してるキーを主キーに...
-
重複していないレコードの抽出...
-
フィルターかけた後、重複を除...
-
列のヘッダーを含めるのをデフ...
-
INSERT文でフィールドの1つだ...
-
access2003 クエリSQL文に...
-
SQLServerで文字列の末尾からあ...
-
Unionの結果全体をOrder By し...
-
【VB.NET】日付型の列にNULLを...
-
日本語のエイリアスは" "で囲...
-
2つのテーブルを結合して最大値...
-
EXISTSを使ったDELETE文
-
データ型でFloatとreal の計算...
-
datetime型でNULL値を入れたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定条件でWHERE句の条件を変更...
-
差し込み後、元データを変更し...
-
SELECT 文 GROUP での1件目を...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
for whichの使い方
-
「no+比較級」の2つの異なる...
-
外部参照してるキーを主キーに...
-
SQLで特定の項目の重複のみを排...
-
INSERT文でフィールドの1つだ...
-
カーソル0件の時にエラーを発生...
-
datetime型でNULL値を入れたい。
-
SQL Left Join で重複を排除す...
-
SQLServerで文字列の末尾からあ...
-
pythonにてseleniumを使うも、...
-
ExcelのVBAコードについて教え...
-
EXISTSを使ったDELETE文
-
SQL Date型の列から年月だけを...
-
列のヘッダーを含めるのをデフ...
-
access2003 クエリSQL文に...
おすすめ情報