Dúvida loop em datas

SQL Server

Oracle PL SQL

21/11/2019

Ola! Boa tarde

Estou com dúvida em uma parte de um código para fazer loop em datas

Quero pegar todos os produtos que foram vendidos uma única vez no mês de referência, então o que o código faz (e dá certo) é pegar o código dos produtos do mês que eu quero e dar um NOT IN pro resto do ano, exemplo: se eu quero de agosto, boto no "between dates" de 01/08/2019 a 31/08/2019 e boto um NOT IN desde janeiro até julho, para retirar os produtos caso eles já tenham sido vendidos naquele mês, assim difere um produto novo de um velho. Mas queria automatizar o código do SQL para somar automaticamente o do ano todo, como fazer esse loop para as duas datas irem de janeiro a dezembro se complementando?

O que eu tentei fazer foi:
.
.
.
.
ORDER BY NUM_org) vt ON vt.NUM_org = algodao.num_orgg
INNER JOIN (SELECT rem.NUM_prumm, max(rem.NUM_LOTE) NUM_LOTE
FROM eg.EGT_prumm_LOTE rem
WHERE rem.DTA_INICIO_PERIODO_REFERENCIA BETWEEN

BEGIN
LOOP
IF xx := 01 OR 03 OR 05 OR 07 OR 08 OR 10 OR 12 THEN
tt := 31
ELSEIF xx := 04 OR 06 OR 09 OR 11 THEN
tt := 30
ELSEIF xx:= 02 THEN
tt := 28
ELSE
printf("Mes invalido");
END IF;


TO_DATE('01/01/2019','dd/mm/yy') AND
TO_DATE('31/01/2019','dd/mm/yy')
GROUP BY rem.NUM_prumm) x ON algodao.NUM_prumm=x.NUM_prumm AND algodao.NUM_LOTE=x.NUM_LOTE
LEFT JOIN eg.EGT_prumm_LOTE algodao ON (algodao.NUM_TRIBUNAL = prum.NUM_TRIBUNAL AND
algodao.NUM_org = prum.NUM_org AND
algodao.NUM_prumm = prum.NUM_prumm AND
algodao.NUM_LOTE = prum.NUM_LOTE)
.
.
.
.
AND pesca.COD_CLASSIFICACAO_pescar = 'V'
ORDER BY NUM_org) vt ON vt.NUM_org = algodao.num_orgg
INNER JOIN (SELECT rem.NUM_prumm, max(rem.NUM_LOTE) NUM_LOTE
FROM eg.EGT_prumm_LOTE rem
WHERE rem.DTA_INICIO_PERIODO_REFERENCIA BETWEEN
TO_DATE('01/01/2010','dd/mm/yy') AND
TO_DATE('31/12/2018','dd/mm/yy')

xx := (xx + 1);
LOOP
EXIT WHEN (xx > 12)
END;

GROUP BY rem.NUM_prumm) x ON algodao.NUM_prumm=x.NUM_prumm AND algodao.NUM_LOTE=x.NUM_LOTE
LEFT JOIN eg.EGT_prumm_LOTE algodao ON (algodao.NUM_SESSAO = prum.NUM_SESSAO AND
algodao.NUM_org = prum.NUM_org AND
algodao.NUM_prumm = prum.NUM_prumm AND
algodao.NUM_LOTE = prum.NUM_LOTE)


Agradeço desde já a ajuda!
Julio Cesar

Julio Cesar

Curtidas 0
POSTAR