首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语句时的情况-三列

问语句时的情况-三列
EN

Stack Overflow用户
提问于 2020-01-09 13:20:44
回答 1查看 65关注 0票数 0

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

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

我在SQL中有两个表。

  • 表1有4列person_id、A、B和C。
  • 表2有3列查找- A、B和C

我想做以下几点:

  • 向下查找表1,A列,查找表2中的值,A列
  • ,如果没有值,则转到表1。
  • 向下查找表1,B列,查找表2中的值,如果没有值,则转到表1,C

<代码>H 117>查找表1,C列,查找表2中的值,列C<代码>H 218<代码>H 119/代码>如果在任何列中没有值,则转到“空”H 220F 221。

所以我知道如何在陈述时写一个简单的案例。但是,我认为“情况”只适用于一列。我已经开始写代码了,但需要帮助才能把它做好。

代码语言:javascript
复制
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

会感谢你的帮助,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-09 13:35:46

除了else 1.C之外,您的sql似乎基本上是正确的。

因为CASE WHEN将返回1值,这取决于第一个正的WHEN条件。

默认情况下,CASE返回NULL。

所以ELSE null并不是真正需要的。

表描述确实表明Table2只包含1行。

如果是的话,你可以交叉加入他们。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59664908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档