Phi*_*hil 5 sql sql-server select sql-server-2012
我试图获取Case_Id的列表,其中案例不包含使用Microsoft Sql Server 2012的特定RoleId.
例如,我想获得一个不包含RoleId为4的Case_Id集合.
因此,从查询下面的数据集中将排除Case_Id的49,50和53.
Id RoleId Person_Id Case_Id
--------------------------------------
108 4 108 49
109 1 109 49
110 4 110 50
111 1 111 50
112 1 112 51
113 2 113 52
114 1 114 52
115 7 115 53
116 4 116 53
117 3 117 53
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已尝试过以下内容
SELECT Case_Id
FROM [dbo].[caseRole] cr
WHERE cr.RoleId!=4
GROUP BY Case_Id ORDER BY Case_Id
Run Code Online (Sandbox Code Playgroud)
Mur*_*nik 13
该not exists操作似乎正好满足你的需要:
SELECT DISTINCT Case_Id
FROM [dbo].[caseRole] cr
WHERE NOT EXISTS (SELECT *
FROM [dbo].[caseRole] cr_inner
WHERE cr_inner.Case_Id = cr.case_id
AND cr_inner.RoleId = 4);
Run Code Online (Sandbox Code Playgroud)
Gor*_*off 10
只需添加一个having子句而不是where:
SELECT Case_Id
FROM [dbo].[caseRole] cr
GROUP BY Case_Id
HAVING SUM(case when cr.RoleId = 4 then 1 else 0 end) = 0
ORDER BY Case_Id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |