Sql server SQL选择不分组的重复值
我检查了所有相关的问题,但找不到确切的我需要的 我需要返回任何数据,其中每个记录的一个特定字段相同,但我不能使用Sql server SQL选择不分组的重复值,sql-server,Sql Server,我检查了所有相关的问题,但找不到确切的我需要的 我需要返回任何数据,其中每个记录的一个特定字段相同,但我不能使用groupby,因为我需要查看所有重复的记录,而不仅仅是对它们进行计数 我尝试过使用groupby和having count(field)>1和各种形式的简单select以及其他尝试使用count()的方法 基本上,我需要查看表中的所有内容,除了一个特定字段具有唯一值之外。如果它不是唯一的,我需要查看它 这里有额外的要求,但为了简单起见,这里不包括这些要求。我正在使用SSMS 2008
groupby
,因为我需要查看所有重复的记录,而不仅仅是对它们进行计数
我尝试过使用groupby
和having count(field)>1
和各种形式的简单select
以及其他尝试使用count()
的方法
基本上,我需要查看表中的所有内容,除了一个特定字段具有唯一值之外。如果它不是唯一的,我需要查看它
这里有额外的要求,但为了简单起见,这里不包括这些要求。我正在使用SSMS 2008 R2
谢谢
示例:
数据:
预期结果:
Col1 | Col2 | Col3
----------------------
abc wow 13/05/2016
abc wow 10/05/2016
ghi wow 13/05/2016
ghi wow 10/05/2016
我想展示任何在Col1中没有唯一值的东西,不太清楚你想做什么,但也许你正在寻找这样的东西
with MyDupes as
(
Select MyColumnWithDupes
, COUNT(*) as RowCount
from SomeTable
Group by MyColumnWithDupes
)
select *
from SomeTable st
join MyDupes md on md.MyColumnWithDupes = st.MyColumnWithDupes
where md.RowCount > 1
您可以使用以下查询:
SELECT Col1, Col2, Col3
FROM (
SELECT Col1, Col2, Col3,
COUNT(*) OVER (PARTITION BY Col1) AS cnt
FROM mytable) AS t
WHERE t.cnt > 1
查询使用窗口版本的COUNT
aggregate函数:该函数应用于Col1
分区。外部查询筛选出只有一次出现的Col1
值的记录。一些具有预期结果的示例数据将有助于我们更好地理解问题。@GiorgosBetsos我试图将其保持为通用,以便对其他人更有用,但我将添加一些数据
SELECT Col1, Col2, Col3
FROM (
SELECT Col1, Col2, Col3,
COUNT(*) OVER (PARTITION BY Col1) AS cnt
FROM mytable) AS t
WHERE t.cnt > 1