2015-06-15 12 views
0

У меня есть запрос в SQL Server 2012: -row_number в запросе Select с отчетливым результатом

SELECT DISTINCT 
    FIELD_1, FIELD_2 
FROM 
    TABLE_A 

Теперь я хочу, чтобы получить номер строки для каждой записи. Поэтому для этой цели я использовал функцию ROW_NUMBER().

SELECT DISTINCT 
    ROW_NUMBER() OVER (ORDER BY FIELD_1, FIELD_2) AS rowId 
    FIELD_1, FIELD_2 
FROM 
    TABLE_A 

Этот запрос не дает мне отчетливого результата.
Как получить отдельный результат с номером строки?

ответ

0

Вы выбираете DISTINCT ROW_NUMBER(). Номера строк, очевидно, будут уникальными (например, отдельными), поэтому это не будет работать для того, чего вы пытаетесь достичь.

+0

Я хочу, чтобы получить различные данные и применять номер строки в этих записях. – unknown

1

попробовать эту

SELECT 
ROW_NUMBER() OVER (ORDER BY FIELD_1, FIELD_2) AS rowId 
FIELD_1, FIELD_2 
FROM (select DISTINCT FIELD_1, FIELD_2 TABLE_A) a 
+1

Я ценю ваш ответ, но подзапрос снизит производительность приложения. Поэтому я должен найти другой путь. – unknown

3

При использовании DISTINCT вы не должны забывать, что она будет применяться после того, как оконные функции, как ROW_NUMBER, что делает все ваши строки уникальным.

Так попробуйте это:

SELECT 
    ROW_NUMBER() OVER (ORDER BY FIELD_1, FIELD_2) AS rowId, 
    FIELD_1, FIELD_2 
FROM 
    TABLE_A 
GROUP BY 
    FIELD_1, FIELD_2 
Смежные вопросы