Case When 语句 - 三列
Case When Statement - Three columns
T-SQL 中使用三列的 when 语句的高级情况
希望有人能在以下方面提供帮助:)
我在 SQL 中有两个表。
- Table 1 有 4 列 - person_id、A、B 和 C。
- Table 2 有 3 个查找列 - A、B 和 C
我要执行以下操作:
- 往下看Table 1,A列,在Table中查找值 2,A列
- 如果没有值,请转到 Table 1,B 列。
- 往下看Table 1,B列,在Table中查找值 2,B列
- 如果没有值,转到Table 1,C 列
- 往下看Table 1、C列,在Table中查找值 2、C列
- 如果任何列中都没有值,请输入 'Null'
所以我知道如何编写一个简单的 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
T-SQL 中使用三列的 when 语句的高级情况
希望有人能在以下方面提供帮助:)
我在 SQL 中有两个表。
- Table 1 有 4 列 - person_id、A、B 和 C。
- Table 2 有 3 个查找列 - A、B 和 C
我要执行以下操作:
- 往下看Table 1,A列,在Table中查找值 2,A列
- 如果没有值,请转到 Table 1,B 列。
- 往下看Table 1,B列,在Table中查找值 2,B列
- 如果没有值,转到Table 1,C 列
- 往下看Table 1、C列,在Table中查找值 2、C列
- 如果任何列中都没有值,请输入 'Null'
所以我知道如何编写一个简单的 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