基于现有值的条件连接

时间:2015-07-14 03:16:16

标签: sql-server-2008

希望在以下场景中进行一些输入(使用MSSQL08)。假设我有一个用户'包含'用户'列表的表格,他们的' CurrentCode' (2位数)和一些' JobCode' (3位数)。我想更新一下' CurrentCode'字段为更准确的3位数代码,因此我创建了一个名为' NewCode'的这些代码的单列表。

' NewCode'字段直接与JobCode'字段,所以更新' CurrentCode'对于拥有有效“JobCode”的用户而言简单。但对于那些没有“JobCode”的人来说呢? (是' NA')我只是将他们当前的2位数代码匹配到' NewCode'中的列表的前2位数字。表。

我已经能够如下输出,使用2个连接到' NewCode'的实例。表('确认'链接到' JobCode'如果值存在且“匹配'链接到' CurrentCode'如果没有”:

+------+-------------+---------+---------------------+-------------------+
| User | CurrentCode | JobCode | NewCode - Confirmed | NewCode - Matched |
+------+-------------+---------+---------------------+-------------------+
| A    |          11 |     111 |                 111 |                   |
| B    |          12 |      NA |                     |               120 |
| C    |          23 |     232 |                 232 |                   |
| D    |          42 |     423 |                 423 |                   |
| E    |          11 |     112 |                 112 |                   |
| F    |          21 |      NA |                     |               210 |
| G    |          33 |      NA |                     |               330 |
+------+-------------+---------+---------------------+-------------------+

我有兴趣了解如何将2个联接组合到' NewCode'表格,它会返回一列中的代码,具体取决于“JobCode”中的匹配项。领域与否。例如:

+------+-------------+---------+---------+
| User | CurrentCode | JobCode | NewCode |
+------+-------------+---------+---------+
| A    |          11 |     111 |     111 |
| B    |          12 |      NA |     120 |
| C    |          23 |     232 |     232 |
| D    |          42 |     423 |     423 |
| E    |          11 |     112 |     112 |
| F    |          21 |      NA |     210 |
| G    |          33 |      NA |     330 |
+------+-------------+---------+---------+

我如何创建这个条件连接到一个表实例,或者甚至可能吗?

1 个答案:

答案 0 :(得分:0)

有条件加入是可能的,而在您的情况下,您可以使用SELECT中的ISNULL()以简单的方式完成

ISNULL([NewCode - Confirmed], [NewCode - Matched]) AS NewCode