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

05/10/2020

0

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

Responder

Posts

05/10/2020

Emerson Nascimento

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
Responder

05/10/2020

Marcus Vinícius

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?
Responder

05/10/2020

Marcus Vinícius

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar