根据多列获取重复行和计数

时间:2018-01-16 06:39:26

标签: sql

我需要根据多列(区域代码,分支代码和本例中的ID)获取不同的行,其中存在重复的列值。与行中的其他信息以及重复行的数量一起。例如:

ID     Areacode     Branch
--------------------------
1       100          200
1       101          200
2       102          201
2       102          201
3       103          200

我需要此查询才能返回

ID     Areacode     Branch   Count
--------------------------------
1       100          200      1
1       101          200      1
2       102          201      2
2       102          201      2
3       103          200      1

我试过

SELECT   Customer_ID,Areacode,Branch COUNT(*) as CNT
 FROM    Table1
 GROUP BY Customer_ID,Areacode,Branch

这导致

ID     Areacode     Branch   Count
--------------------------------
1       100          200      1
1       101          200      1
2       102          201      1
2       102          201      1
3       103          200      1

2 个答案:

答案 0 :(得分:1)

使用COUNT作为分析函数:

SELECT
    Customer_ID, Areacode, Branch,
    COUNT(*) OVER (PARTITION BY Customer_ID, Areacode, Branch) Count
FROM Table1;

我发现原始查询存在两个问题。一个是您按Customer_ID而不是ID进行分组。另一个是如果你聚合那么你将不会保留原始表中的所有行。将COUNT与分区一起使用可以避免这种情况。

答案 1 :(得分:0)

SELECT Customer_ID, Areacode, Branch, COUNT(Areacode) as COUNT
FROM Table1 
GROUP BY Areacode

请修改您的查询,我想这肯定会帮助您......