选择具有多个条件的多个列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择具有多个条件的多个列相关的知识,希望对你有一定的参考价值。

我在选择两列时遇到一些麻烦,每列都有不同的条件

第一桌(主)

id_main |Title
---------------
1       |Title1
2       |Title2

第二张桌子(人)

id_psn | id_main | Name | status
-------------------------------
1      | 1       | Tedy | 1
2      | 1       | john | 2
3      | 2       | lisa | 1
4      | 2       | khan | 2

第二个表的id_main是外键表单第一个主键。我想要一个选择查询来生成2列(person1和person2)person1包含name其中status为1,person2为2.它应该生成这样的表

id_main | title  | person1 | person2
------------------------------------
1       | title1 | Tedy    | john
2       | titl2  | Lisa    | khan

香港专业教育学院尝试了这样的查询

 SELECT  main.id_main ,main.title,
(SELECT  person.name  where person.status = 1) as 'person1',
(SELECT  bap.nama  where person.status= 2) as 'person2'
FROM main 
JOIN person on main.id_main = person.id_main

并不像我想要的那样工作。它产生这样的

id_main | title  | Person1 | person2
-----------------------------------
1       | title1 | Tedy    | NULL
1       | title1 | NULL    | john
2       | title2 | Lisa    | NULL
2       | title2 | NULL    | khan

希望有人能解决这个问题

答案
SELECT a.id_main,
       b.Title AS title,
       MAX( CASE WHEN a.status = 1 THEN a.Name ELSE NULL END ) AS person1,              
       MAX( CASE WHEN a.status = 2 THEN a.Name ELSE NULL END ) AS person2
  FROM person a
INNER JOIN
       main b
    ON a.id_main = b.id_main
GROUP BY a.id_main,b.Title;   

以上是关于选择具有多个条件的多个列的主要内容,如果未能解决你的问题,请参考以下文章

具有多个条件的选择案例函数未循环

SQL 具有多个条件的多个计数列

在 R dplyr 中过滤具有多个条件名称匹配的数据框

用于从具有多个条件的多个表中的多个列中获取数据的存储过程

根据单个列中的多个条件选择多个列

在其他列中计算具有多个条件的 NaN 单列