我正在创建一个查询所有筛选出吸烟状况并需要一组独特患者的人。我从遇到的桌子上拉,所以病人可能会被多次询问。在我的情况下,当我声明我想限制"那么......"导致类似于"然后计算不同的患者"但它给了我一个关于聚合不允许聚合的错误。如果我删除它,它将不会产生我想要的总数,它告诉我我需要在group by子句中,我不想要它。据我所知,限制不是sql-server中的一个选项
,count(case when soc.tobacco_user_c in (1, 2, 4, 5) and dmw.SMOKING_CESS_CNSL_YN ='y' then enc.PAT_ID **Here is where I want a unique count of patients** end) Compliant
答案 0 :(得分:0)
示例强>
SELECT
COUNT(DISTINCT CASE WHEN tobacco = 1 THEN PAT_ID ELSE NULL END)
...
;
我缩写了您的示例,以便于阅读。 NULL不会包含在最终计数中,因此无需担心off by one错误。
答案 1 :(得分:0)
case when soc.tobacco_user_c in (1, 2, 4, 5) and dmw.SMOKING_CESS_CNSL_YN ='y' then COUNT(DISTINCT enc.PAT_ID) ELSE 0 end Compliant
答案 2 :(得分:0)
我最终创建了两个子查询,然后在这些查询的每个最大列上执行不同的选择计数,以将结果限制为一个