如何基于SQL Server CASE语句检索列的单个记录

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

我正在尝试编写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
sql sql-server database case-statement
1个回答
0
投票

我认为您要汇总。

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()

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