sql-server - SQL 选择重复值而不分组

标签 sql-server

我已经检查了所有相关问题,但找不到我需要的确切内容。

我需要返回任何数据,其中每条记录的一个特定字段都相同,但我不能使用 group by因为我需要查看所有重复的记录,我不只是想要对它们进行计数。

我试过使用 group byhaving 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/

相关文章:

sql - 在具有日期限制的 SQL 记录中搜索

sql - 如何生成组合

node.js - 提交的 Sequelize 事务的结果是 "undefined"

c# - 从 SQL Server 数据库中获取 1 个单元格的更简单方法

c# - 迭代上下文类型的查询结果时发生异常。连接已关闭

sql-server - 将值转换为 URL 友好格式 - Unicode 分解 ähhh

c# - 如何通过动态加载的控件将数据保存到数据库

sql-server - SQL Server : replace sequence of same characters inside Text Field (TSQL only)

c# - 使用 @@TRANCOUNT 有用吗?

sql-server - 是否有替代 SET STATISTICS TIME 的方法也显示语句?