我正在尝试编写SQL Server CASE语句以根据以下条件检索学生的类别。
如果student_category表中的category字段同时具有student_id表中的student_id字段的值'X'和'Y',则仅显示记录值是“ Y”。如果category字段具有值“ X”或“ Y”,则显示具有该值的记录。如果category字段没有值'X'或'Y',则在该字段显示空白。
因此,即使每个学生ID都有多个类别,我也应该只有一行数据。但是,对于每个不止一个类别的student_id,我仍然获得多条记录。关于我可能会缺少的任何想法吗?
SELECT DISTINCT
s.student_id,
CASE
WHEN sc.category = 'X' and sc.category = 'Y' THEN 'Y'
WHEN sc.category = 'X' or sc.category = 'Y' THEN sc.category
ELSE ''
END AS student_cat
FROM student s
left join student_category sc
on s.student_id = sc.student_id
我认为您要汇总。
select s.student_id, min(sc.category) as student_cat
from student s left join
student_category sc
on s.student_id = sc.student_id
group by s.student_id;
我不能从你的问题中分辨出来;您可能需要max()
而不是min()
。