识别所有值相同的子集

时间:2014-08-06 12:59:42

标签: sql-server sql-server-2008

我有一个表(ID,CASENO,STATUS),它有很多行,都有一个唯一的ID - CASENO有一组行 - 我想创建一个查询,显示所有CASENO值,其中所有的该CASENO的行具有相同的STATUS

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

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

2 个答案:

答案 0 :(得分:5)

select caseno
from my_table
group by caseno
having count(distinct status) = 1

聚合中将隐式忽略任何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

答案 1 :(得分:0)

@Mike你可以在执行@davek查询后发布查询结果。我可以看到它给出了预期的结果。

Result Set