如何解决同时使用案例和分组依据
我想在SQL中使用case
,但也要使用正确的group by
SELECT patientname,patientid,cancerstatus,CASE
WHEN cancerstatus IS NOT NULL THEN 'In surgery'
WHEN cancerstatus IS NULL THEN 'no surgery needed'
END case
FROM database (nolock)
WHERE biopsydate BETWEEN '2020-08-25' AND '2020-08-26'
GROUP BY patientname,patientID
因此,我想通过一个案例表达将每个进行过癌症活检的患者归为需要手术的类别,而且我还想使用PatientID和名称(必须有两个条件)对患者进行分组。
case
部分周围显示错误,我做错了什么?
解决方法
我认为您需要在case
中重复group by
,
SELECT patientname,patientid,(CASE WHEN PJMPSID is not null,THEN 'In surgery'
WHEN cancerstatus is null then 'no surgery needed'
END) as status
FROM database
WHERE biopsydate between '2020-08-25' and '2020-08-26'
GROUP BY patientname,patientID,THEN 'In surgery'
WHEN cancerstatus is null then 'no surgery needed'
END);
一些注意事项:
-
NOLOCK
不应使用,除非您真的知道自己在做什么。 - 您显然正在使用SQL Server。您应该标记问题。
-
SELECT
和GROUP BY
列必须保持一致。在cancerstatus
中包含SELECT
是没有意义的,除非它也在GROUP BY
中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。