编辑:这是MS SQL Server 2008
我想找到仅针对特定记录的重复项,
在下面的示例中,我想查找具有Status = 1
以下是示例数据集
ID |Name |Status
------------------------
1 |ABC |1
2 |BAC |1
3 |CBA |1
4 |ABC |2
5 |BAC |5
6 |BAC |7
7 |DAE |8
8 |DAE |2
我想要的是这个
Name |Count
-----------------
ABC |2
BAC |3
最初我想用这个
SELECT Name,COUNT(*)
GROUP BY Name
HAVING COUNT(*) > 1
但结果将是
Name |Count
-----------------
ABC |2
BAC |3
DAE |2
但这不是我需要的。
答案 0 :(得分:1)
你很亲密。您希望将having
子句更改为仅计算状态为1的值:
SELECT Name, COUNT(*)
FROM table t
GROUP BY Name
HAVING sum(case when status = 1 then 1 else 0 end) > 0;
编辑:
如果您只想要计数大于1且状态为1的事物:
SELECT Name, COUNT(*)
FROM table t
GROUP BY Name
HAVING sum(case when status = 1 then 1 else 0 end) > 0 and
count(*) > 1;