2013-03-20 3 views
1

У меня есть этот запрос, чтобы выразить набор бизнес-правил. Чтобы получить необходимую информацию, я попытался присоединиться к таблице, но это возвращает много других записей, чем на самом деле в таблице. Ниже приведен запрос, который я попробовал. Что я делаю не так?Self Join приносит слишком много записей

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

Вы можете сделать это с имеющим п:

select a, b, count(*) c 
from etc 
group by a, b 
having count(*) >= some number 
Смежные вопросы