ここから本文です

Table_Aに対して、CODEの値を変換するためのテーブル(Table_B)があり、 2つのテ...

l94********さん

2015/6/1817:37:59

Table_Aに対して、CODEの値を変換するためのテーブル(Table_B)があり、
2つのテーブルを結合してVIEW1を作成したいと考えております。

select a.id, a.name, b.code
from table_a a left join table_b b
on a.id=b.id

のようにLEFT JOINで結合すると、01、03のユーザのCODEの値がNULLになって
しまうかと思います。
変換テーブルに存在していないユーザに関してはTable_Aの値を優先して
表示させたいと考えております。
どのようなSQL文にすればよろしいでしょうか?

よろしくお願いいたします。(Oracle11g)

Table_A
----------------------
ID NAME CODE
01 suzuki AAA
02 yamada BBB
03 tanaka BBB
04 sato CCC
----------------------

Table_B
----------------------
ID CODE
02 DDD
04 AAA
----------------------


VIEW1
----------------------
ID NAME CODE
01 suzuki AAA
02 yamada DDD
03 tanaka BBB
04 sato AAA
----------------------

閲覧数:
27
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

ghk********さん

2015/6/1817:47:02

caseを使って
select a.id, a.name,
case when b.code is not null then b.code else a.code end
from table_a a left join table_b b
on a.id=b.id

もしくはnvlやcoalesceを使って
select a.id, a.name,
coalesce(b.code,a.code)
from table_a a left join table_b b
on a.id=b.id

環境がないので確認してません。間違ってたらゴメンナサイ。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる