2013-03-20 63 views
1

我有這個查詢來表達一組業務規則。 爲了獲得我需要的信息,我嘗試加入表格本身,但是這會帶回比表中實際數量更多的記錄。以下是我試過的查詢。我究竟做錯了什麼?自加入帶來太多記錄

SELECT DISTINCT a.rep_id, a.rep_name, count(*) AS 'Single Practitioner' 
FROM [SE_Violation_Detection] a inner join [SE_Violation_Detection] b 
ON a.rep_id = b.rep_id and a.hcp_cid = b.hcp_cid 
group by a.rep_id, a.rep_name 
having count(*) >= 2 
+0

此違規表是否有一列來指示違規類型?每行是否反映了代表,實踐者,產品和違規類型? – 2013-03-20 17:19:00

+0

每一行都反映了代表,從業者和產品。它不反映違規類型。我必須根據數據和業務規則來弄清楚。 – Javi 2013-03-20 17:50:38

回答

1

我想出了一個更簡單的方式來獲得我需要的一個查詢的信息。上面的那個還是錯的。

--Rep violation for different HCP more than 5 times 
select distinct rep_id,rep_name,count(distinct hcp_cid) 
AS 'Multiple Practitioners' 
from dbo.SE_Violation_Detection 
group by rep_id,rep_name 
having count(distinct hcp_cid)>4 
order by count(distinct hcp_cid) 
4

您可以用having子句實現這一點:

select a, b, count(*) c 
from etc 
group by a, b 
having count(*) >= some number