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 为空时,我想检索 TableB 中 ColB 的值(如果存在)并使用它来代替 ColA。如果 ColB 中不存在值,则结果中 ColA 的值应为空。连接是在 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, 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 回答
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 回答
0

听起来您正在寻找案例陈述。尝试case when TableA.Value is null then TableB.Value end

SQL 案例语句

于 2012-05-17T15:33:44.873 回答