2014-09-02 66 views
0

我很困惑,为什么这些查询返回不同数量的记录,请注意XXX表格只包含三列A,B,C计算数量重复的行

查询1)

SELECT SUM (Counts) FROM 
    (
     SELECT Count(*) Counts FROM dbo.XXX 
       GROUP BY A,B,C 
       HAVING COUNT(*) = 1 
    ) T 

查询2)

SELECT A, B, C 
    FROM [dbo].XXX 
    GROUP BY A,B,C 
+1

因为它们是不同的查询? 1.有一个having子句只返回'count = 1'的结果,并且2.不包含 – Tanner 2014-09-02 13:09:26

+0

第二个查询是简单的select语句,group by和1st查询正在计数n个子查询..显然它会给出不同的结果集 – mohan111 2014-09-02 13:09:30

回答

3

也许是因为第一个查询只相加,通过数恰好等于1。你的第二个查询将返回所有罪状有一批小组,小组由计数是否为一个或多个。

因此,有可能A,B和C的组合出现多次。如果是这种情况,你的数量将不会相同。

+0

A,B,C是整个表 – Costa 2014-09-02 13:17:49

+0

@Costa - 无论它是整个表都没关系。我甚至不确定你的意思。我要说的是,在你的表格中,你必须有A和B以及C的值出现一次以上的情况。因为,如果他们没有这两个查询会返回相同的结果。 – 2014-09-02 13:22:20

0

查询1正在计算A,B & C在表中唯一的记录数。

查询2给出了表中A,B & C的唯一组合。