Select Oracle com Inner Join

SQL

Oracle

15/01/2017

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

Curtidas 0

Respostas

Roberto Spernega

Roberto Spernega

15/01/2017

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
GOSTEI 0
POSTAR