2013-03-20 7 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

이 위반 테이블에 위반 유형을 나타내는 열이 있습니까? 각 행에 담당자, 수료자, 제품 및 위반 유형이 반영됩니까? –

+0

각 행에는 담당자, 종사자 및 제품이 반영됩니다. 위반 유형을 반영하지 않습니다. 데이터와 비즈니스 규칙에 따라이를 파악해야합니다. – Javi

답변

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 
관련 문제