0

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

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

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

但不可能用多于一列。有没有办法解决这个问题?

4

1 回答 1

0

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

于 2013-03-14T17:46:19.690 回答