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:
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?
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
Curtir tópico
+ 0
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
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
Clique aqui para fazer login e interagir na Comunidade :)