我已经检查了所有相关问题,但找不到我需要的确切内容。
我需要返回任何数据,其中每条记录的一个特定字段都相同,但我不能使用 group by
因为我需要查看所有重复的记录,我不只是想要对它们进行计数。
我试过使用 group by
和 having count(field) > 1
以及各种形式的简单select
和其他尝试使用的方式 count()
没有运气。
基本上,我需要查看表中的所有内容,除了某个特定字段具有唯一值的位置。如果它不是唯一的,我需要查看它。
还有其他where
要求,但为简单起见,我没有将它们包括在此处。我正在使用 SSMS 2008 R2。
谢谢
示例:
数据:
Col1 | Col2 | Col3
----------------------
abc wow 13/05/2016
abc wow 10/05/2016
def wow 13/05/2016
ghi wow 13/05/2016
ghi wow 10/05/2016
jkl wow 01/01/2016
预期结果:
Col1 | Col2 | Col3
----------------------
abc wow 13/05/2016
abc wow 10/05/2016
ghi wow 13/05/2016
ghi wow 10/05/2016
我希望显示在 Col1 中没有唯一值的任何内容
最佳答案
您可以使用以下查询:
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
的窗口版本聚合函数:该函数应用于Col1
分区。外部查询过滤掉具有 Col1
的记录仅出现一次的值。
关于sql-server - SQL 选择重复值而不分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212861/