识别所有值相同的子集

Mik*_*ike 2 sql-server sql-server-2008

我有一个表(ID,CASENO,STATUS)有很多行,都有一个唯一的ID - CASENO有行分组 - 我想创建一个查询,向我显示所有CASENO值,其中包含所有行CASENO的状态相同

ID   CASENO   STATUS
1    123      X
2    123      Y
3    123      X
4    234      X
5    234      X
6    567      Z
7    567      Z
8    567      Z
9    789      A
10   789      B
Run Code Online (Sandbox Code Playgroud)

所以这将返回234和567,因为它们在STATUS中具有相同的值

dav*_*vek 5

select caseno
from my_table
group by caseno
having count(distinct status) = 1
Run Code Online (Sandbox Code Playgroud)

任何NULL旨意被隐忽略在聚集中,而不是导致骨料本身返回一个NULL即你count(distinct status)应该确定,即使你有NULL状态值.

更新: 要提供状态计数列表caseno,您可以这样做:

select caseno, status, count(*)
from my_table
group by caseno, status
-- include next line if you only want cases where the count is > 1
-- having count(*) > 1
Run Code Online (Sandbox Code Playgroud)

  • @Mike:我真的相信你的另外一个问题值得拥有自己的主题.你应该发布一个新问题. (2认同)