私は2つのテーブルを持ってT1
おりT2
、1つの列C
は両方に共通しています。他のテーブルから選択する SQL クエリが必要C
です。null
T1
SELECT
ステートメントをTHEN
句に書いてみましたが、実行されませんでした。IF ELSE
SQLに句があるかどうかわかりません。
Select C, case when c = null Then Select c from T2
from T1
私は2つのテーブルを持ってT1
おりT2
、1つの列C
は両方に共通しています。他のテーブルから選択する SQL クエリが必要C
です。null
T1
SELECT
ステートメントをTHEN
句に書いてみましたが、実行されませんでした。IF ELSE
SQLに句があるかどうかわかりません。
Select C, case when c = null Then Select c from T2
from T1
さらに良いことに、ほとんどの RDBMS は をサポートCOALESCE
しています。これにより、複数の値をチェックして、最初の非 null 値を返すことができます。
SELECT COALESCE(T1.C, T2.C) AS C
FROM T1
LEFT OUTER JOIN T2 ON T1.[Primary Key] = T2.[Primary Key]
これはTransactSQLにありますか?
私は最初の答えが好きです、しかしあなたはそれをこのようにすることもできます...
select case t1.C
when null then t2.C
else t1.C
end as [testC]
from t1
inner join t2
on t1.PKID = t2.PKID
あなたが必要としているのは労働組合です
select c from t1
where c is not null
union
select c from t2
where c is not null
これで、1 つの結果セットC
からすべての列を取得できますが、null でない場合のみです。T1
T2
もちろん、これで問題が単純化しすぎた場合は、結合を使用する必要があります
select coalesce(t1.c,t2.c) as c
from t1
left join t2 on (t2.id = t1.foreign_id)
これT2.ID
は、主キーであり、に関連しているとT1
想定されていますT1.FOREIGN_ID
左結合を行うことが重要です。そうしないとT1
、行が にも存在する場合にのみ行が取得されるためですT2
。