语句时的情况-三栏

问题描述 投票:-1回答:1

在T-SQL中使用三列的语句时的高级情况

希望有人可以提供以下帮助:)

我在SQL中有两个表。

  • 表1有4列-person_id,A,B和C。
  • 表2具有3个查询列-A,B和C

我要执行以下操作:

  • 查看表1的A列,在表2的A列中找到值
  • 如果没有值,请转到表1,B列。
  • 查找表1,B列,在表2,B列中找到值
  • 如果没有值,请转到表1,C列
  • 查看表1,C列,在表2,C列中找到值
  • 如果任何列中都没有值,请输入'Null'

所以我知道如何编写一个when语句的简单案例。但是,我认为“何时出现”仅适用于一列。我已经开始写出代码,但是需要帮助才能正确处理。

Select person_id, 
case when 1.A is not null then 2.A
when 1.B is not null then 2.B
else 1.C
end as CODE
from table 1
left join table 2
Order by person_id

非常感谢您能提供的任何帮助,谢谢。

tsql case-when
1个回答
0
投票

您的sql似乎最正确,除了else 1.C

由于CASE WHEN将返回1值,具体取决于第一个可能的WHEN标准。

并且CASE默认返回NULL。因此ELSE null并不是真正需要的。

表说明确实表明Table2仅包含1行。

如果是这样,那么您可以交叉加入他们。

SELECT t1.person_id, 
CASE 
WHEN t1.A IS NOT NULL THEN t2.A
WHEN t1.B IS NOT NULL THEN t2.B
WHEN t1.C IS NOT NULL THEN t2.C
END AS [CODE]
FROM table1 t1
CROSS JOIN table2 t2
© www.soinside.com 2019 - 2024. All rights reserved.