Функция SQL Row_Number () в предложении Where без ORDER BY?

Я нашел кучу вопросов по этой теме с хорошими решениями, но ни один из них на самом деле не касается того, что делать, если данные не должны быть упорядочены определенным образом. Например, следующий запрос:

WITH MyCte AS 
(
    select   employee_id,
             RowNum = row_number() OVER ( order by employee_id )
    from     V_EMPLOYEE 
    ORDER BY Employee_ID
)
SELECT  employee_id
FROM    MyCte
WHERE   RowNum > 0

хорошо работает, если данные должны быть упорядочены по employee_id. Но что, если у моих данных нет определенного порядка, а сами номера строк действуют как идентификатор? Моя цель - написать такой запрос (с функцией Row_Number () без предложения ORDER BY ):

WITH MyCte AS 
(
    select   employee_id,
             RowNum = row_number() OVER ( <PRESERVE ORIGINAL ORDER FROM DB> )
    from     V_EMPLOYEE 
    ORDER BY Employee_ID
)
SELECT  employee_id
FROM    MyCte
WHERE   RowNum > 0

РЕДАКТИРОВАТЬ: После поиска в Google я понял, что это не действительно возможно. Могут ли некоторые предложить обходной путь для этого?

42
задан Adrian Carneiro 17 June 2011 в 18:42
поделиться