2011-10-04 29 views
1

我正在使用SSMS 2008并尝试使用HAVING语句。这应该是一个真正简单的查询。不过,我只收到一条记录返回的事件,虽然有很多重复。TSQL无效HAVING计数

我在这里做了什么错误的HAVING语句?还是有一些其他功能可以用来代替?从address_view

select 
     address_desc, 
     people_id 
from 
     dbo.address_view 
where people_id is not NULL 
group by people_id , address_desc 
having count(*) > 1 

样本数据:

people_id       address_desc 
----------       ------------ 
Murfreesboro, TN 37130   F15D1135-9947-4F66-B778-00E43EC44B9E 
11 Mohawk Rd., Burlington, MA 01803 C561918F-C2E9-4507-BD7C-00FB688D2D6E 
Unknown, UN 00000     C561918F-C2E9-4507-BD7C-00FB688D2D6E 
Jacksonville, NC 28546   FC7C78CD-8AEA-4C8E-B93D-010BF8E4176D 
Memphis, TN 38133     8ED8C601-5D35-4EB7-9217-012905D6E9F1 
44 Maverick St., Fitchburg, MA 8ED8C601-5D35-4EB7-9217-012905D6E9F1 
+1

你似乎并不对你所提供的任何数据复制。 –

+0

有声明是正确的,但你的分组可能不是,你尝试过'group_ by people_id'没有',address_desc'吗? – Johan

+0

是的,有重复的。请参阅address_desc列。 – salvationishere

回答

1

本集团将会一概而论你重复连成一排。

我认为不是,你想找到所有people_id值与重复address_desc

SELECT a.address_desc, a.people_id 
    FROM dbo.address_view a 
     INNER JOIN (SELECT address_desc 
         FROM dbo.address_view 
         GROUP BY address_desc 
         HAVING COUNT(*) > 1) t 
      ON a.address_desc = t.address_desc 
+0

谢谢乔!这几乎就是我所需要的!我实际上需要重复人员记录的地址。所以我刚刚通过用people_id替换address_desc替换了上面的逻辑,它的工作方式就像一个魅力! – salvationishere

+0

@salvationishere有道理。我认为您必须在问题中的示例数据上标注相反的标签。 –

+0

是的,我只是注意到了这一点。谢谢。 – salvationishere