将值与包含部分数据的表匹配,并从另一个包含完整数据的表返回值,否则为null



表A是一个包含所有客户端帐户的表。每个客户都有一个常规的主账户,但有些客户除了主账户之外还有特殊类别账户。

表B将特殊类别账户与主要账户联系起来。如果客户没有特殊类别账户,则不在表B中。

表C是来自客户账户和我正在使用的表的交易。

Table A                Table B                Table C
+------+------------+  +------+------------+  +------+------------+--------------+------------+
|  ID  |    Name    |  |  ID  | Related_ID |  | c.ID |    c.ID    | b.related_ID |   a.Name   |
+------+------------+  +------+------------+  +------+------------+--------------+------------+
| 1001 | Alice      |  | 1002 |       1003 |  | 1001 | Alice      |            0 | 0          |
| 1002 | Bob        |  | 1004 |       1005 |  | 1002 | Bob        |         1003 | Bob EX     |
| 1003 | Bob EX     |  | 1004 |       1006 |  | 1004 | Charlie    |         1004 | Charlie EX |
| 1004 | Charlie    |  |      |            |  | 1005 | Charlie EX |            0 | 0          |
| 1005 | Charlie EX |  |      |            |  | 1006 | Charlie NA |            0 | 0          |
| 1006 | Charlie NA |  |      |            |  |      |            |              |            |
+------+------------+  +------+------------+  +------+------------+--------------+------------+

我希望表C有一个列(a.Name(,如果存在的话,它会返回相关的"EX"特殊类别帐户,否则它将为null。我很难在两个表之间进行匹配,但在需要时仍然返回null。我已经列出了表列"b.related_ID"one_answers"a.Name"作为我试图使表看起来像什么的示例。非常感谢。

您可以使用NULLIF函数

无效(a.Name,0(

最新更新