Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL根据特定记录查找重复项_Sql_Sql Server_Sql Server 2008_Duplicates - Fatal编程技术网

SQL根据特定记录查找重复项

SQL根据特定记录查找重复项,sql,sql-server,sql-server-2008,duplicates,Sql,Sql Server,Sql Server 2008,Duplicates,编辑:这是MS SQL Server 2008 我只想找到特定记录的副本, 在下面的示例中,我希望根据状态为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 我想要的是这个 Na

编辑:这是MS SQL Server 2008

我只想找到特定记录的副本, 在下面的示例中,我希望根据状态为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

但那不是我需要的。

你很接近了。您希望将
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;

你不也想要CBA吗?@GordonLinoff不CBA是不重复的,但我不需要在select子句中包含状态才能对它们求和吗?感谢@bluefeet,你可以在这里看到它的作用()。您不需要在
select
语句中设置
status