Нужно выбрать запрос - PullRequest
0 голосов
/ 19 июня 2009

Рассмотрим следующую структуру таблицы с данными -

AdjusterID  |  CompanyID  |  FirstName  | LastName | EmailID
============================================================
1001        | Sterling    | Jane        | Stewart  | janexxx@sterlin.com
1002        | Sterling    | David       | Boon     | dav@sterlin.com
1003        | PHH         | Irfan       | Ahmed    | irfan@phh.com
1004        | PHH         | Rahul       | Khanna   | rahul@phh.com
============================================================

Где AdjusterID является первичным ключом. Нет монтажников для компании.

Мне нужен запрос, в котором будет указан один настройщик для каждой компании. то есть мне нужно получить результат как -

========================================================
1001 | Sterling  | Jane  | Stewart | janexxx@sterlin.com
1003 | PHH       | Irfan | Ahmed   | irfan@phh.com
========================================================

Если кто-нибудь сможет мне помочь, это будет здорово.

Ответы [ 2 ]

2 голосов
/ 19 июня 2009

В одну сторону:

SELECT * FROM Adjusters 
WHERE AdjusterID IN(SELECT min(AdjusterID) 
                    FROM Adjusters GROUP BY CompanyID)

Есть несколько других способов, включающих объединения и итерации, но этот достаточно прост, чтобы начать работу.

Редактировать: предполагается, что вам нужен регулятор с наименьшим идентификатором, как в вашем примере

0 голосов
/ 19 июня 2009

Я знаю, что ответ от Джереми является правильным, поэтому я не буду повторять его. Но вы можете попробовать другой, используя так называемый тай-брейк:

--//using a tie-breaker. Should be very fast on the PK field
--// but it would be good to have an index on CompanyID
SELECT  t.* 
FROM    MyTable t
WHERE   t.AdjusterID = (SELECT TOP 1 x.AdjusterID FROM MyTable x WHERE x.CompanyID = t.CompanyID ORDER BY AdjusterID)

Это может быть лучше с точки зрения производительности. Но еще более полезно, если у вас есть другой столбец в таблице, и вы хотите выбрать не один столбец для каждой компании, а лучший для каждой компании, используя в качестве критерия какой-либо другой рейтинг столбца. Таким образом, вместо ORDER BY AdjusterID вы бы упорядочили по этим другим столбцам.

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