sql - 如何根据 SQL Server CASE 语句检索列的单条记录
问题描述
我正在尝试编写一个 SQL Server CASE 语句来根据以下条件检索学生的类别。
如果表中的category
列对于表中的值student_category
同时具有值“X”和“Y” ,则仅显示值为“Y”的记录。student_id
student
如果category
具有值“X”或“Y”,则显示具有该值的记录。
如果category
没有值“X”或“Y”,则为该列显示一个空白,即,如果有除“X”或“Y”之外的任何其他类别,则显示一个空白。
student_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()
.
推荐阅读
- javascript - 如何使按钮在另一个功能发生时出现?
- php - “空格”字符的表单检查 - PHP
- bootstrap-4 - Bootstrap 滑块,向右排列值
- youtube - Youtube api 公众评论垃圾邮件
- javascript - 如何一次又一次地动态替换文本
- pandas - 理解 Stack/Unstack/Pivot_Table/etc
- google-apps-script - 谷歌脚本 CardService.newButtonSet() 越来越空
- java - CalandarView 获取用户选择的日期
- python - 使用日志配置深度复制对象时获取“TypeError:无法腌制 thread.lock 对象”
- python - 双递归调用