Я использую функцию ROW_NUMBER в sql в разделе набора результатов, где мне нужна только первая строка в каждом разделе. Вот запрос:
Select A, B, C, ROW_NUM
FROM
(SELECT A,B,C, ROW_NUMBER() OVER (PARTITION BY A ORDER BY C DESC) AS R0W_NUM
FROM TABLE
)X
WHERE ROW_NUM = 1
Это дает желаемые результаты.
Но вместо этого теперь я использую функцию FIRST_VALUE следующим образом:
SELECT A,B,C, FIRST_VALUE(C) OVER (PARTITION BY A ORDER BY C DESC) AS ROW_NUM
FROM TABLE
Но приведенный выше запрос также дает мне повторяющиеся значения. Может ли кто-нибудь подсказать мне, как мне избавиться от дубликатов? Пробовал использовать DISTINCT, не помогает.
A,B,C
наFIRST_VALUE(<letter>)
и повторяющиеся предложенияOVER()
, чтобы получить тот же набор результатов, но зачем вам это? Какова реальная мотивация, еслиROW_NUMBER()
уже выполняет правильную работу? Или, если он не выполняет правильную работу, чего вы на самом деле пытаетесь здесь достичь? - person Damien_The_Unbeliever   schedule 24.04.2015tsql
?), чтобы люди, разбирающиеся в этом диалекте, могли помочь (поскольку между диалектами SQL существуют значительные различия). - person Amadan   schedule 24.04.2015SELECT DISTINCT
? - person user4759923   schedule 24.04.2015