Select Oracle com Inner Join

15/01/2017

0

Estou tentando realizar um select para obter as quantidades vendidas de um produto em três períodos diferentes eu fiz o seguinte SELECT:

SELECT A.CODPROD, SUM(A.QT) AS PERIODO1, SUM(B.QT) AS PERIODO2, SUM(C.QT) AS PERIODO3
FROM PCPEDI A
INNER JOIN PCPEDI B ON A.CODPROD = B.CODPROD
INNER JOIN PCPEDI C ON C.CODPROD = A.CODPROD
WHERE
A.DATA BETWEEN to_date ('2016-01-01', 'YYYY-MM-DD') AND to_date ('2016-01-31', 'YYYY-MM-DD') AND
B.DATA BETWEEN to_date ('2016-02-01', 'YYYY-MM-DD') AND to_date ('2016-02-28', 'YYYY-MM-DD') AND
C.DATA BETWEEN to_date ('2016-03-01', 'YYYY-MM-DD') AND to_date ('2016-03-05', 'YYYY-MM-DD')
GROUP BY
A.CODPROD


Quando realizei ele só com um INNER JOIN deu certo mais quando coloquei o segundo não rodou mais.

Alguém pode me ajudar a descobrir o que tem de errado com ele ou se existe outra maneira de se fazer isso?
Weverton

Weverton

Responder

Posts

16/01/2017

Roberto Spernega

Bom dia,

Você precisa trocar o AND por OR

Com AND a data nunca vai ser estar nos três períodos.


SELECT A.CODPROD, SUM(A.QT) AS PERIODO1, SUM(B.QT) AS PERIODO2, SUM(C.QT) AS PERIODO3
FROM PCPEDI A
INNER JOIN PCPEDI B ON A.CODPROD = B.CODPROD
INNER JOIN PCPEDI C ON C.CODPROD = A.CODPROD
WHERE (
A.DATA BETWEEN to_date ('2016-01-01', 'YYYY-MM-DD') AND to_date ('2016-01-31', 'YYYY-MM-DD') or
B.DATA BETWEEN to_date ('2016-02-01', 'YYYY-MM-DD') AND to_date ('2016-02-28', 'YYYY-MM-DD') or
C.DATA BETWEEN to_date ('2016-03-01', 'YYYY-MM-DD') AND to_date ('2016-03-05', 'YYYY-MM-DD'))
GROUP BY
A.CODPROD
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