SQL - 如果column为null,则从另一个表获取值

时间:2015-07-02 21:48:08

标签: sql sql-server select

我正在构建数据协调系统的匹配规则,并且需要您为调整我的sql提供建议,因为它目前还没有返回我需要的内容。
有2个源表:

      Table X                 Table Y
---------------------         ----------------------
Exec_ID   From  To            Exec_ID     From  To
1         A     B             1           B     C
2         A     B             2           B     C
3         A     B             3           B     C
4         A     B
                              5           B     C

匹配条件是:

X.To = Y.From
X.Exec_ID = Y.Exec_ID

如果有A - >; B然后B - > C,它应该返回A - > C到底。
如果只有A - > B并且没有进一步的B - > C,它应该返回A - >乙

所以输出应该如下。

From    To
---------
A       C
A       C
A       C
A       B

使用的SQL是:

select X.From, Y.To
from x
    left outer join y on
    x.To = Y.From
    and x.Exec_ID = y.Exec_ID

返回

之类的值
A C
A C
A C
A Null

所以最后一条记录不正确,因为它应该是A B.请帮助调整。

1 个答案:

答案 0 :(得分:2)

检查是否为空?

select X.From, [To] = COALESCE(Y.To, X.To)
from x
    left outer join y on
    x.To = Y.From
    and x.Exec_ID = y.Exec_ID