2013-06-21 2 views
0

Мой сотрудник ТаблицаКак получить следующий результат для моего SQL?

EMPLOYEEID, EMPLOYEENAME 

Мой CallReportEmployee Таблица

ReportID, EMPLOYEEID 

Мой отчет Таблица

ReportID , ReportName 

Когда я хочу, чтобы получить это я хочу, чтобы показать все имена сотрудников, когда те, техника его подводит выберите ReportID 1

1 отчет может состоят из многих сотрудников

Как я могу добиться такого результата, я хочу, чтобы список всех сотрудников с ReportID один, а не 1?

EMPLOYEENAME REPORTID 
Roger    1 
Peter    1 
Shawn    NULL 
Peter    NULL 

Я стараюсь это, он не работает

SELECT rc.EmployeeID, rc.ReportID, e.FirstName 
FROM employee e 
LEFT JOIN callreportemployee rc ON e.ID = rc.EmployeeID 

это просто показать все служащий

EMPLOYEENAME REPORTID 
Roger    Null 
Peter    1 
Peter    2 
Shawn    3 
Shawn    2 
John    NULL 

если я добавить в where rc.ReportID = 1 он стал только

шоу Питера

Как я могу достичь формата, который я хочу? Я не хочу дублировать Имя

+1

Если я правильно понимаю ваш вопрос, вы хотите, чтобы значения с NULL и 1? Если это так, просто измените предложение WHERE на дополнительное условие в ON – Jaloopa

+0

Могу ли я получить значения 3 & 2? могу ли я заставить их отображаться как NULL? – Ryan

ответ

0

Как я могу достичь формата, который я хочу? Я не хочу дублировать имя

Используйте предложение GROUP BY агрегировать повторяющихся имен, так как в этом запросе:

SELECT U.Id as [User Link], Count(Pt.Id) AS ANSWERS 
FROM Users U, Posts P, PostHistory Ph, PostTypes Pt 
WHERE 
Pt.Id = Ph.PostHistoryTypeId 
AND 
U.Id = P.OwnerUserId 
AND 
P.Id = Ph.PostId 
AND 
Pt.Id = 2 
GROUP BY U.Id 
HAVING Count(Pt.Id) > 2000 
ORDER BY ANSWERS DESC 

Ссылки