Case When 语句 - 三列

Case When Statement - Three columns

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

希望有人能在以下方面提供帮助:)

我在 SQL 中有两个表。

我要执行以下操作:

所以我知道如何编写一个简单的 case when 语句。但是,我认为 'case 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

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

您的 sql 似乎大部分是正确的,除了 else 1.C

因为 CASE WHEN 将 return 1 值,具体取决于第一个正 WHEN 标准。

CASE returns NULL 作为默认值。
所以 ELSE null 并不是真正需要的。

table 描述表明 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 [Table 1] t1
CROSS JOIN (
   SELECT TOP 1 A, B, C
   FROM [Table 2]
   ORDER BY A DESC, B DESC, C DESC
) t2