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

Я использую Oracle 12c, и у меня есть таблица с различными столбцами, включая столбец даты для ввода записи.Я хочу убедиться, что я получаю предпоследнюю дату для каждого элемента и комбинации местоположения в моей таблице.

Вот код SQL, который я сделал, чтобы попытаться достичь этого:

SELECT 
   DISTINCT 
   ITEM,
   LOCATION, 
   ORDER_POINT, 
   SAFETY_STOCK, 
   NTH_VALUE(REPL_DATE, 2) 
   OVER (PARTITION BY ITEM,LOCATION ORDER BY REPL_DATE DESC
   RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS PREVIOUS_DATE  
FROM 
   REPL_RESULTS

ВотПример результатов, когда я запускаю следующее:

SELECT 
   ITEM,
   LOCATION, 
   ORDER_POINT, 
   SAFETY_STOCK,
   REPL_DATE
FROM 
   REPL_RESULTS
ORDER BY ITEM, LOCATION

Результаты:

ITEM    LOCATION ORDER_POINT SAFETY_STOCK REPL_DATE 
0006296   100495    4.8416      0.1937     1/10/2019
0006296   100495    4.9021      0.2201     1/3/2019
0006296   100495    4.7848      0.15       11/22/2018
0006296   132142    3.1516      0.2481     1/9/2019
0006296   132142    2.091       0.23       1/16/2019
0006296   132142    2.903       0.1811     11/14/2018

Результат, который я ожидаю, таков:

ITEM    LOCATION ORDER_POINT SAFETY_STOCK PREVIOUS_DATE 
0006296   100495    4.9021      0.2201     1/3/2019
0006296   132142    3.1516      0.2481     1/9/2019

Заранее спасибо!

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете использовать оконную функцию Oracle ROW_NUM(), чтобы назначить номер строки каждой строке в каждой позиции / группе местоположений, упорядоченной по дате повторения, а затем отфильтровать записи, имеющие номер строки 2.

SELECT x.*
FROM (
    SELECT
        t.*,
        ROW_NUMBER() OVER(PARTITION BY t.item, t.location ORDER BY t.repl_date desc) rn
    FROM mytable t
) x WHERE x.rn = 2

Это демо на дб скрипке дает:

ITEM | LOCATION | ORDER_POINT | SAFETY_STOCK | REPL_DATE | RN
---: | -------: | ----------: | -----------: | :-------- | -:
6296 |   100495 |      4.9021 |        .2201 | 03-JAN-19 |  2
6296 |   132142 |      3.1516 |        .2481 | 09-JAN-19 |  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...