【发布时间】:2018-07-03 06:04:00
【问题描述】:
我有以下类型的表:
BranchName CustID
========== ======
Branch1 1111
Branch1 1111
Branch1 2222
Branch2 2222
Branch2 4444
Branch3 1111
Branch4 3333
我想要实现的是计算不同的 CustID 并按分支对它们进行分组,而不重复任何 CustID。
基本上我正在尝试解决这个问题:
BranchName DistCountofCust
========== ======
Branch1 2
Branch2 1
Branch3 0
Branch4 1
我试过这段代码:
SELECT X.BranchName, COUNT(DISTINCT X.CustID) as DistCountofCust
FROM
(SELECT T.BranchName, T.CustID
FROM MyTable T) as X
GROUP BY X.BranchName
它没有给出正确的结果(没有正确计算每个分支的 CustID 数量,因为某些分支的 CustID 重叠)。是否可以消除不同的 CustID 并将它们按给定的分支进行分组? (在最终结果中,我只需要为分支机构列出唯一客户)。
【问题讨论】:
-
您期望什么结果集?如果它不能正常工作,我们需要知道你所说的是正确的。 :)
-
它可以简化为
SELECT X.BranchName, COUNT(DISTINCT X.CustID) as DistCountofCust FROM MyTable as X GROUP BY X.BranchName但是代码对我来说似乎是正确的 -
@Larnu 我已经编辑了这个问题。我认为我没有正确说明我想要实现的目标。
标签: sql-server group-by count distinct-values