我作为数据人在学校系统工作,在我最近的报告中,我需要发送给州,我需要发送一些有关学生参加测试的数据。很容易。
问题产生于这样一个事实:当教师或管理员输入有关有多种特殊需求的学生的数据时,他们有时会将其填写正确,即通过说多种残疾,有时他们为每个特殊需要单独输入。例如,学生可能有学习障碍和情绪残疾,管理员会做两个条目,而不是一个。
我的查询很长,所以我不打扰整件事,需要这样的事情:
select
stuff
,morestuff
,CASE
When [**a student is in the list multiple times**]
Then '**Multiple Disabilities**'
When '01'
Then 'Blind'
等等。
在我脑海中看起来很容易,但是当我尝试将其提交给代码时它会崩溃。
答案 0 :(得分:4)
这应该对任何RDBMS都非常通用。这假设有一个名为“disabilityname”的列,它会保留您的值01
,并假设某个studentid
列。
如果学生在子查询COUNT(*)
中多次出现,则会返回Multiple Disabilities
,否则会返回disabilityname
列,假设它具有单个值。
SELECT
stuff,
morestuff,
CASE
WHEN cnt.numdisabilities > 1 THEN 'Multiple Disabilities'
ELSE disabilityname
END as disabilityname
FROM
tbl JOIN (
SELECT studentid, COUNT(*) AS numdisabilities FROM tbl GROUP BY studentid
) cnt ON tbl.studentid = cnt.studentid