在同一个表中获取不同列的重复值

时间:2013-03-14 17:20:17

标签: sql sql-server-2008 group-by duplicates multiple-columns

如何在同一个表中获取不同列的重复值?

我认为这很简单。我有一张桌子:

Id    Column1     Column2
-------------------------
 1    John        red
 2    Patrick     white
 3    Alessia     yellow
 4    Aline       red
 5    Eva         orange
 6    John        blue
 7    Oscar       yellow
 8    Peter       red

所以,我想要的结果是:

Column1     Column2    Total1  Total2
-------------------------------------
John        red           2      3
Patrick     yellow        1      2
Alessia     white         1      1
Aline       orange        1      1
Eva         blue          1      1
Oscar                     1
Peter                     1

所以:拿出副本,对它们进行求和,然后对它们进行分组。

我只能用这样一列来做:

SELECT TOP 5
  column1, COUNT(*) AS total1
FROM table
GROUP BY column1
ORDER BY total1 DESC

但是不可能有多个专栏。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

您要求一种通用机制将两个关系(Name,CountOfColorForName)和(Color,CountOfNameForColor)组合成一个关系。没有一般方法可以做到这一点;首先需要特定于应用程序的映射。鉴于此映射,可以简单地编写适当的SQL。