多列重复查询

时间:2014-06-19 15:31:29

标签: c# tsql sql-server-2008-r2

我正在使用csharp中的t-sql来查询包含5列的数据库表 跟踪某些行为在某个行动中发生的次数的整数 程序。表中还有其他列。

示例:

Num1  Num2  Num3  Num4  Num5

1     15    22     23    32
15    4     21     17    19
6     5     15     18    20

我需要构造一个返回每个重复的整数集的查询

。所有这5列的所有行的计数(当被视为一组值时)都已重复。

为了进一步澄清,我需要知道Num1 = 6,Num2 = 5,Num3 = 15,Num4 = 18和Num5 = 20的次数,如果它确实发生的话。我还需要知道这五列中是否出现任何其他重复集。

我知道一些SQL,但这是一个复杂的查询,我需要帮助。我试过了 许多子查询等,但我只是无法弄清楚正确的组合 SELECT和ORDER BY使它工作。有问题的数据表约有7000个 其中的记录预计不会超过大约10k,因此性能是次要的。

提前感谢。

2 个答案:

答案 0 :(得分:1)

这看起来像是一个直接的SELECT COUNT,在五列上有一个GROUP BY。

有些事情:

SELECT Num1, Num2, Num3, Num4, Num5, COUNT(someColumn) GROUP BY Num1, Num2, Num3, Num4, Num5

答案 1 :(得分:0)

您可以使用子查询上的连接执行此操作,该子查询仅使用重复项并计算它们

select a.Col1, a.Col2, a.Col3, a.Num1, a.Num2, a.Num3, a.Num4, a.Num5, t.cnt as numberOfDuplicates
from tableA a
join (select Num1, Num2, Num3, Num4, Num5, count(*) as cnt
      from tableA
      group by Num1, Num2, Num3, Num4, Num5
      having count(*) > 1
     ) t
  on a.Num1 = t.Num1 and a.Num2 = t.Num2 and a.Num3 = t.Num3 and a.Num4 = t.Num4 and a.Num5 = t.Num5