Sql 使用have查找重复项
我想在下表中找到所有的副本。 我知道我可以使用CTE包装查询,然后语法就正确了。 我对能够直接访问cnt柱的解决方案感兴趣。 我还想使用countoverpartitionby子句Sql 使用have查找重复项,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想在下表中找到所有的副本。 我知道我可以使用CTE包装查询,然后语法就正确了。 我对能够直接访问cnt柱的解决方案感兴趣。 我还想使用countoverpartitionby子句 CREATE TABLE #People ( ID INT, [NAME] varchar(50), AGE INT ) INSERT INTO #PEOPLE SELECT 1,'Mark',23 UNION SELECT 2,'Tomm',23 UNION SELECT 3,'Ann',26 select *
CREATE TABLE #People
(
ID INT,
[NAME] varchar(50),
AGE INT
)
INSERT INTO #PEOPLE
SELECT 1,'Mark',23
UNION
SELECT 2,'Tomm',23
UNION
SELECT 3,'Ann',26
select * from #People
select [NAME] , AGE, count(1) over (partition by [NAME], AGE) as cnt
from #People
having count(cnt) > 2
为什么不直接使用分组方式呢
如果您想要副本,那么比较可能应该是:
having count(*) >= 2
为什么不直接使用分组方式呢
如果您想要副本,那么比较可能应该是:
having count(*) >= 2
优雅而简单的方法总是最好的:Dresult of this query:Invalid column name'cnt'。需要COUNT*>2。在选择之前,将先处理HAVING。要找到重复项,我会说wehre COUNT*>1actually@DougCoats . . . 我调整了答案。>2由OP提供。优雅而简单的方法总是最好的:此查询的结果:无效列名“cnt”。需要具有COUNT*>2。在选择之前,将先处理HAVING。要找到重复项,我会说wehre COUNT*>1actually@DougCoats . . . 我调整了答案。OP提供了>2的数据。