让我们来看看示例简化表格,我有:
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
你可以做聚合:
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_id
与Classes
是多余这里。