Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何筛选出至少出现一次值的组?_Sql_Sql Server - Fatal编程技术网

Sql 如何筛选出至少出现一次值的组?

Sql 如何筛选出至少出现一次值的组?,sql,sql-server,Sql,Sql Server,在下面的示例数据中,我只需要显示ContactType不等于caseid_I的“CLOSR”的记录,但下面的代码会过滤掉任何带有CLOSR的内容,而不是caseid_I。因此,如果至少有一个caseid_I的ContactType为“CLOSR”,我需要过滤掉整个caseid。所以对于CaseID_i 51709,这个CaseID_i根本不会出现在我的结果中,因为至少有一个“联系人类型”是CLOSR,而51715也是这样 选择C.[cdcpincid\u C] ,I.[caseid_I] ,I

在下面的示例数据中,我只需要显示ContactType不等于caseid_I的“CLOSR”的记录,但下面的代码会过滤掉任何带有CLOSR的内容,而不是caseid_I。因此,如果至少有一个caseid_I的ContactType为“CLOSR”,我需要过滤掉整个caseid。所以对于CaseID_i 51709,这个CaseID_i根本不会出现在我的结果中,因为至少有一个“联系人类型”是CLOSR,而51715也是这样

选择C.[cdcpincid\u C]
,I.[caseid_I]
,I.echono_c
,C.[结束日期]作为结束日期
,C.[临床医生]
,N.[contacttyp_c]作为ContactType
,SC.StaffName作为ClosureStaffName
,I.Refdate\u d
从[cd].[tb\U cdcp\U病例]C
内部联接[cd].[tb\u-cdcp\u事件]I ON I.[uniqueid\u c]=c.[cdcpincid\u]
内部联接[cd].[tb\u-cdcp\u-clientcontact]N在I上[uniqueid\u-c]=N.[cdcpincid\u-c]
左外连接[dbo]。[vCDCP_Staff]SC ON C.临床医生_C=SC.员工代码_C
按C分组[cdcpincid_C]
,I.[caseid_I]
,I.echono_c
,C.[结束]
,C.[临床医生]
,N.[联系方式]
,SC.StaffName
,I.Refdate\u d
有总和(格)
当N.[contacttyp_c]=“CLOSR”
那么1
其他0
结束)=0
并且C[close_d]不为空
和I.echono_c'OC'

where
子句中删除条件,并将其切换到
having
子句:

having sum(case when ContactType = 'CLOSR' then 1 else 0 end) = 0
编辑:

我明白了。每个
caseid
返回多行。在这种情况下,还可以使用窗口功能:

having sum(sum(case when ContactType = 'CLOSR' then 1 else 0 end)) over (partition by caseid) = 0

我在上面的代码中做了一些更改,以包含having子句,但它仍然会显示至少有一个CLOSR ContactType的CaseID。@Dee。每个
caseid
您的结果集有多行。要获取所有联系人,可以使用窗口功能。
having sum(sum(case when ContactType = 'CLOSR' then 1 else 0 end)) over (partition by caseid) = 0