Как выбрать максимальное значение на основе нескольких полей и сгруппированных по нескольким полям - PullRequest
0 голосов
/ 03 июля 2018

пожалуйста, помогите со следующим. Пример данных:

LOCATION    ITEMNO  TRANSDATE   DAYENDSEQ   ENTRYSEQ    LINENO  ANSWER
Area1       A       20180702    1           1           1       a
Area1       A       20180703    1           1           1       b
Area1       A       20180703    2           1           1       c
Area1       A       20180703    2           2           1       d
Area1       A       20180703    2           2           2       e
Area1       B       20180703    1           1           1       f
Area1       C       20180703    1           1           2       g
Area1       C       20180703    1           1           1       h
Area2       A       20180703    1           2           1       i
Area2       A       20180703    1           1           4       j
Area2       A       20180703    1           1           5       k

Возвращать значение ОТВЕТА для каждого элемента в местоположении, где комбинация TRANSDATE, DAYENDSEQ, ENTRYSEQ и LINENO (в этом порядке) является наибольшей.

LOCATION    ITEMNO  TRANSDATE   DAYENDSEQ   ENTRYSEQ    LINENO  ANSWER
Area1       A       20180703    2           2           2       e
Area1       B       20180703    1           1           1       f
Area1       C       20180703    1           1           2       g
Area2       A       20180703    1           2           1       i

1 Ответ

0 голосов
/ 03 июля 2018

Используйте функцию стандарта ANSI row_number():

select t.*
from (select t.*,
             row_number() over (partition by location, itemno 
                                order by transdate desc, dayendseq desc, entryseq desc, lineno desc
                               ) as seqnum
      from t
     ) t
where seqnum = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...