2010-05-18 1 views
3

Я хочу написать запрос, как это:SQL Server Выберите Distinct

Для таблицы, которая имеет следующие столбцы: КОЛ Co Co, ColD

выберите первый (COLA, ColB, ColC, ColD) различно (ColB, ColC) из таблицы порядка COLD

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

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

ответ

6

Похоже, вы хотите «максимум на группу».

Один из способов заключается в использовании функции оконную 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 
+0

+1 - Я был в основном печатает то же самое. Функции ранжирования недооцениваются. ;-) – Lucero

+0

спасибо за помощь. дурак я! – homam