如何计算一个表中具有多个记录的唯一记录数

时间:2016-08-08 20:15:31

标签: sql sql-server count

我有以下客户表:

CustomerID, ReferenceID    
1   ,101    
2   ,101    
3   ,101    
4   ,102    
5   ,102    
6   ,103

我想计算有多少ReferenceID有多个customerID,我写了以下查询:

SELECT CustomerID,  ReferenceID, Count(1)
FROM   Customer
group by CustomerID,    ReferenceID    
having Count(1) >1

我应该得到数字2因为2 ReferenceID有多个customerID,但我没有得到任何数字

2 个答案:

答案 0 :(得分:1)

DECLARE @ReferenceIdCount INT

SELECT @ReferenceIdCount = COUNT(*)
FROM
    (
       SELECT
          ReferenceId
          ,COUNT(DISTINCT CustomerId) as ReferenceCount
       FROM
          @Table
       GROUP BY
          ReferenceId
       HAVING
          COUNT(DISTINCT CustomerId) > 1
    ) t

首先,您必须找到具有多个CustomerIds的ReferenceId,然后您必须计算它们。所以你可以通过多种方式实现这一目标,但嵌套选择是一种向您展示的简单方法。

答案 1 :(得分:0)

我可以将此号码设为变量吗?

宣布@RFCount

设置@RFCount =(

SELECT COUNT(*) 从     (        选择           ReferenceId           ,COUNT(DISTINCT CustomerId)作为ReferenceCount        从           @表        通过...分组           ReferenceId        HAVING           COUNT(DISTINCT CustomerId)> 1     )t)

打印@FCount

我收到上述声明的错误消息