2016-02-01 2 views
-2

Можно ли использовать ROWNUMBER() для фильтрации записей с несколькими рядами.Фильтрация записей с несколькими рядами SQL

E.g.

  • Включить записи только с одной строкой?

или

  • Исключить записи с более чем одной гп?

код до сих пор:

SELECT * 
FROM 
    (SELECT 
     ID, blah, blah2, 
     ROWNUMBER() OVER(PARTITION BY ID ORDER BY blah, blah2) AS rn 
    ORDER BY ID) 
WHERE rn IS ONLY 1; 
+0

SELECT * FROM ( –

+1

использование 'COUNT (*)' вместо 'row_number()' –

+0

Является ли намерение устранить записи с дублированным идентификатором? Вы почти закончили. Используйте ROW_NUMBER и WHERE rn = 1. Вам не нужно ЗАКАЗАТЬ BYid. –

ответ

0

на самом деле вы сделали это почти правильно:

SELECT * 
FROM 
    (SELECT 
     ID, blah, blah2, 
     ROW_NUMBER() OVER(PARTITION BY ID ORDER BY blah, blah2) AS rn 
    FROM table_name 
    WHERE ... 
    ) 
WHERE rn = 1; 
+0

Это выводит все записи с rn = 1, но не исключает всех записей, которые имеют rn из 1, а также rn> 1. –

+0

Извините, но в этом случае я не понимаю, чего вы пытаетесь достичь ... А что такое «м» в вашем комментарии? – MaxU

+0

Это было объяснено ужасно, но сейчас решилось, поэтому не стоит беспокоиться, и вы имеете в виду «rn»? Если это так, то рябь –

Смежные вопросы