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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar