SQL Server Выберите Отличительный - PullRequest
3 голосов
/ 18 мая 2010

Я хочу написать запрос, подобный этому:

Для таблицы с этими столбцами: ColA ColB ColC, ColD

выберите первым (ColA, ColB, ColC, ColD) отчетливый (ColB, ColC) из таблицы заказ по ColD

Запрос должен упорядочить таблицу по ColD, затем сгруппировать результаты по комбинации ColB и ColC (они могут иметь разные типы данных) и вернуть первые строки (со всеми столбцами таблицы) в группы .

Как это возможно в MS SQL Server 2005?

1 Ответ

6 голосов
/ 18 мая 2010

Звучит так, будто вы хотите «максимум на группу».

Один из способов - использовать оконную функцию ROW_NUMBER для нумерации строк в каждой группе, а затем выбрать только те строки, у которых номер строки 1:

SELECT ColA, ColB, ColC, ColD
FROM
(
    SELECT
         ColA, ColB, ColC, ColD,
         ROW_NUMBER(PARTITION BY ColB, ColC ORDER BY ColD) AS rn
    FROM table1
) T1
WHERE rn = 1
...