2016-11-10 31 views
1

我有一个小桌子有3列:伯爵对AB和BA与第三个参数

+---------------------------+ 
| col 1 | col2 | col 3  | 
+---------------------------+ 
| A | B  | 10  | 
| A | B  | 20  | 
| B | A  | 20  | 
| B | C  | 10  | 
| B | C  | 20  | 
| A | C  | 10  | 
| C | A  | 10  | 

我想做什么的就是数列3每一对新人的不同的值(第1栏的数量,第2列)得到。 我的问题是我无法得到处理doublelon(A,B)与(B,A)相同。

下面是结果我试图让:

+------------------------+ 
| col 1 | col 2 | count()| 
+------------------------+ 
| A | B | 2  | // OR BA : 2 
| B | C | 2  | // OR CB : 2 
| A | C | 1  | // OR CA : 1 

回答

2

我想你想count(distinct)least()greatest()

select least(col1, col2) as col1, greatest(col1, col2) as col2 
     count(distinct col3) as cnt 
from t 
group by least(col1, col2), greatest(col1, col2); 
+0

THX了很多它的工作,我要去检查文档最不重要的! –