-1

私は2つのテーブルを持ってT1おりT2、1つの列Cは両方に共通しています。他のテーブルから選択する SQL クエリが必要Cです。nullT1

SELECTステートメントをTHEN句に書いてみましたが、実行されませんでした。IF ELSESQLに句があるかどうかわかりません。

Select C, case when c = null Then Select c from T2
from T1
4

3 に答える 3

5

さらに良いことに、ほとんどの RDBMS は をサポートCOALESCEしています。これにより、複数の値をチェックして、最初の非 null 値を返すことができます。

SELECT COALESCE(T1.C, T2.C) AS C
FROM T1
LEFT OUTER JOIN T2 ON T1.[Primary Key] = T2.[Primary Key]
于 2012-08-28T19:17:53.283 に答える
0

これは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
于 2012-08-28T19:23:39.943 に答える
0

あなたが必要としているのは労働組合です

select c from t1
where c is not null
union
select c from t2
where c is not null

これで、1 つの結果セットCからすべての列を取得できますが、null でない場合のみです。T1T2

もちろん、これで問題が単純化しすぎた場合は、結合を使用する必要があります

    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

于 2012-08-28T19:18:48.663 に答える