如何解决我只想显示那些状态为成功或失败的 ClaimID
ClaimID | 类别ID | 状态 |
---|---|---|
1 | 一 | 成功 |
1 | b | 空 |
1 | c | 失败 |
2 | 一 | 成功 |
2 | b | 成功 |
2 | c | 失败 |
3 | 一 | 空 |
3 | b | 空 |
3 | c | 空 |
我只想显示那些所有 ClaimID
都是 Status
或 'success'
的 'fail'
。
结果应该是 2。
解决方法
请您试试以下方法
SELECT T.ClaimID
FROM YourTable AS T
WHERE NOT EXISTS
(
SELECT 1 FROM YourTable AS T2 WHERE T.CliamID=T2.ClaimID AND T2.Status IS NULL
)
,
如果我理解你的问题,下面的查询应该有效
create table #YourTable (ClaimID INT,CategoryID VARCHAR(10),[Status]VARCHAR(10))
INSERT INTO #YourTable VALUES
(1,'a','success'),(1,'b',null),'c','fail'),(2,(3,null)
SELECT
ClaimID,CategoryID,[Status]
FROM #YourTable
WHERE [Status] IN ('success','fail')
DROP TABLE #YourTable
输出
ClaimID CategoryID Status
1 a success
1 c fail
2 a success
2 b success
2 c fail
,
您可以GROUP BY ClaimID
并在HAVING
子句中设置条件:
SELECT ClaimID
FROM tablename
GROUP BY ClaimID
HAVING COUNT(*) = COUNT(Status) -- there are not any nulls
参见demo。
结果:
> | ClaimID |
> | ------: |
> | 2 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。