SQL Server получает первое значение при группировании - PullRequest
7 голосов
/ 06 апреля 2011

У меня есть таблица со столбцом a, имеющим необязательно различные значения, и столбец b, имеющий для каждого значения несколько различных значений. Я хочу получить результат, в котором каждое значение появляется только один раз и получает первое найденное значение b для этого значения a. Как мне сделать это в SQL Server 2000?

пример таблицы:

a  b
1  aa
1  bb
2  zz
3  aa
3  zz
3  bb
4  bb
4  aa

Требуется результат:

a  b
1  aa
2  zz
3  aa
4  bb

Кроме того, я должен добавить, что все значения в столбце b являются текстовыми значениями. Я обновил пример, чтобы отразить это. Спасибо

Ответы [ 2 ]

8 голосов
/ 06 апреля 2011
;with cte as
    (
  select *,
    row_number() over(partition by a order by a) as rn
  from yourtablename
    )    
    select  
a,b
from cte 
where rn = 1 
7 голосов
/ 06 апреля 2011

SQL не знает о порядке по строкам таблицы.Вам необходимо ввести порядок в структуре таблицы (обычно с использованием столбца id).Тем не менее, если у вас есть столбец id, это довольно просто:

SELECT a, b FROM test WHERE id in (SELECT MIN(id) FROM test GROUP BY a)

Возможно, есть способ сделать это, используя внутренние функции SQL Server.Но это решение переносимо и его легче понять любому, кто знает SQL.

...