Как выбрать сотрудников наиболее выгодные дела? - PullRequest
2 голосов
/ 18 февраля 2011

В ms sql я наткнулся на запрос, который мне нужно сделать, но не могу обернуть его вокруг себя.

Я упростил его до случая сотрудника, который можно применить к моей ситуации.

Employee: [EmpID, Name]
Case    : [CaseID, EmployeeID, CaseName, Profit]

Как выбрать наиболее выгодное дело сотрудника по его имени?

Я бы хотел, чтобы результат был похож на

Result  : [EmpID, Name, CaseID, CaseName, Profit]

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011
SELECT *
FROM   Employee e
       INNER JOIN Case c ON c.EmployeeID = e.EmpID
       INNER JOIN (
         SELECT EmployeeID, MAX(Profit) AS Profit
         FROM   Case
         GROUP BY 
                EmployeeID
       ) pmax ON pmax.EmployeeID = c.EmployeeID
                 AND pmax.Profit = c.Profit

Обратите внимание, что это не завершено, если у вас есть дела для сотрудников с одинаковой прибылью. Для этих случаев вы бы добавили еще одно объединение в смесь

0 голосов
/ 18 февраля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...