选择情况下,结合超过1个条件考虑多个值

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

让我们来看看示例简化表格,我有:

Classes table:

class_id
1
2
3

Students table:

id, class_id, name,   sex
1,  1,        John,   M
2,  1,        Mike,   M
3,  3,        Rob,    M
4,  2,        Kate,   F
5,  2,        Sophie, F
6,  2,        Laura,  F
7,  3,        Julia,  F

我想有将在其中说明一栏,如果类是男性,女性或混合

我想这样的,但它不工作,看起来像在课堂上只检查第一个学生,并分配其值造成的。类“3”应该是“混合”

select class_id,
case when s.sex = 'M' then 'Male'
when s.sex = 'F' then 'Female'
when s.sex = 'F' and s.sex = 'M' then 'Mixed'
end as class_type
    from class c
    join students as s on s.class_id = c.class_id
sql postgresql
1个回答
0
投票

你可以做聚合:

SELECT C.class_id, 
       (CASE WHEN MIN(S.SEX) <> MAX(S.SEX) THEN 'MIXED' ELSE CAST(MIN(S.SEX) AS text) END) AS class_type
FROM Classes C INNER JOIN
     Students S
     ON S.class_id = C.class_id
GROUP BY C.class_id;

但是,如果你想只比从JOIN表的详细信息Classes其他class_idClasses是多余这里。

© www.soinside.com 2019 - 2024. All rights reserved.