2

次のテーブルTableAとデータがあります。

ID    ColA
0     10
1     null
2     20

次のデータを含む別のテーブルTableBがあります。

ID    ColB   ColC
1     30     80
1     40     70 
3     50     100

TableAの行を選択する必要がありますが、行のColAがnullの場合、TableBのColBの値(存在する場合)を取得して、ColAの代わりに使用します。ColBに値が存在しない場合、結果のColAの値はnullになります。結合はTableA.IDとTableB.IDで行われます。TableBには、ID列が繰り返される複数の行を含めることができます。TableB.IDとTableB.ColCを一緒に使用すると、行が一意になります。したがって、ColCが70の値に制限されている場合、私の結果は次のようになります。

ID   ColA
0     10 
1     40
2     20

これを行う方法がわかりません。ご協力いただきありがとうございます!

4

3 に答える 3

1

私があなたの質問を正しく解釈した場合、これはあなたが望むことをするようです:

SELECT  a.ID,
        ISNULL(a.ColA, b.ColB) ColA
FROM    TableA a
        LEFT JOIN
                TableB b
                ON a.ID = b.ID
                AND b.ColC = 70

あなたが言ったように、私はColCで文字通り「70の値に制限されています」。

于 2012-05-17T15:31:13.410 に答える
1
select a.ID, COALESCE(a.ColA, b.ColB) as 'ColA'
from TableA a
left join TableB b on a.ID = b.ID and b.ColC = 70
于 2012-05-17T15:32:04.520 に答える
0

ケースステートメントを探しているようです。試すcase when TableA.Value is null then TableB.Value end

SQLケースステートメント

于 2012-05-17T15:33:44.873 に答える