ORACLE - Pegar últimos 5 dias de um intervalo definido na query.

Oracle

Oracle PL SQL

05/10/2020

Tenho uma query que usa between para filtrar um intervalo entre datas, porém surgiu a necessidade de filtrar os últimos 5 dias do desse intervalo de datas, por exemplo:
DH_MVTO_ESTOQUE BETWEEN TO_DATE ('20/05/2020', 'dd/mm/yyyy')
      AND TO_DATE ('20/07/2020', 'dd/mm/yyyy')


No caso aí inserido acima que é parte da minha query, era se possível pegar apenas do dia 15/07/2020 até o 20/07/2020.
Marcus Vinícius

Marcus Vinícius

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

05/10/2020

não conheço os recursos do Oracle, mas acho que isto pode funcionar:
SELECT
   DH_MVTO_ESTOQUE
FROM
(   SELECT
      DH_MVTO_ESTOQUE
   FROM
      TABELA
   WHERE
      DH_MVTO_ESTOQUE BETWEEN TO_DATE ('20/05/2020', 'dd/mm/yyyy')
         AND TO_DATE ('20/07/2020', 'dd/mm/yyyy')
   GROUP BY
      DH_MVTO_ESTOQUE
   ORDER BY
      DH_MVTO_ESTOQUE DESC
) T
WHERE
   ROWNUM <= 5
GOSTEI 0
Marcus Vinícius

Marcus Vinícius

05/10/2020

não conheço os recursos do Oracle, mas acho que isto pode funcionar:
SELECT
   DH_MVTO_ESTOQUE
FROM
(   SELECT
      DH_MVTO_ESTOQUE
   FROM
      TABELA
   WHERE
      DH_MVTO_ESTOQUE BETWEEN TO_DATE ('20/05/2020', 'dd/mm/yyyy')
         AND TO_DATE ('20/07/2020', 'dd/mm/yyyy')
   GROUP BY
      DH_MVTO_ESTOQUE
   ORDER BY
      DH_MVTO_ESTOQUE DESC
) T
WHERE
   ROWNUM <= 5
Porém essa table tem a dh_mvto_estoque de vários produtos, ou seja, tenho que retornar os ultimos 5 dias de consumo de cada produto, nesse caso com rownum vai vir 5 linhas no total, apenas das datas mas próximas.. Ou seja, consegui em partes, coloquei DH_MVTO_ESTOQUE ESC e depois order by cd produto, mas como retornas agora apenas 5 ultimas datas de cada produto?
GOSTEI 0
Marcus Vinícius

Marcus Vinícius

05/10/2020

não conheço os recursos do Oracle, mas acho que isto pode funcionar:
SELECT
   DH_MVTO_ESTOQUE
FROM
(   SELECT
      DH_MVTO_ESTOQUE
   FROM
      TABELA
   WHERE
      DH_MVTO_ESTOQUE BETWEEN TO_DATE ('20/05/2020', 'dd/mm/yyyy')
         AND TO_DATE ('20/07/2020', 'dd/mm/yyyy')
   GROUP BY
      DH_MVTO_ESTOQUE
   ORDER BY
      DH_MVTO_ESTOQUE DESC
) T
WHERE
   ROWNUM <= 5
Porém essa table tem a dh_mvto_estoque de vários produtos, ou seja, tenho que retornar os ultimos 5 dias de consumo de cada produto, nesse caso com rownum vai vir 5 linhas no total, apenas das datas mas próximas.. Ou seja, consegui em partes, coloquei DH_MVTO_ESTOQUE ESC e depois order by cd produto, mas como retornas agora apenas 5 ultimas datas de cada produto?
Resolvido! Inseri um Rank_Prod para retornar apenas 5 registros de cada produto.
GOSTEI 0
POSTAR