Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo MF

[Resolvido] query

Recommended Posts

Bom dia senhores, estou com uma duvida em uma query que talvez pra vcs seja facil de resolver.Tenho a seguite query:

SELECT

M.LIQU_DTA_LIB

,SUM(L.LIQP_QTDE_SAI) AS SAIDA

,ME.DEVOLUCAO

FROM

LIQUIDACAO M

,LIQUIDACAO_P L

,GENER$V G

,(SELECT

E.MOVE_MOVE_DOCUM AS MEDOCUM

,E.MOVE_MOVE_EMP_ID AS MEEMP_ID

,SUM(E.MOVE_QTDE) AS DEVOLUCAO

FROM

MOV_ESTOQUE_D E

WHERE

E.MOVE_MOVE_OPER_E_ID = 2

AND E.MOVE_PROD_EMP_ID = 12

GROUP BY

E.MOVE_MOVE_DOCUM

,E.MOVE_MOVE_EMP_ID

,E.MOVE_DTA_CAD) ME

WHERE

(G.GEN_ID (+) = M.LIQU_GEN_ID)

AND (G.GEN_TGEN_ID (+) = M.LIQU_GEN_TGEN_ID)

AND (G.GEN_EMP_ID (+) = M.LIQU_GEN_EMP_ID)

AND (TRUNC(M.LIQU_DTA_EMIS) >= TO_DATE('01/03/2011','DD/MM/YYYY'))

AND (TRUNC(M.LIQU_DTA_EMIS) <= TO_DATE('31/03/2011','DD/MM/YYYY'))

AND M.LIQU_EMP_ID = '12'

AND M.LIQU_DTA_LIB IS NOT NULL

AND L.LIQP_LIQU_ID = M.LIQU_ID

AND ME.MEEMP_ID = M.LIQU_EMP_ID

AND ME.MEDOCUM = TO_CHAR(M.LIQU_ID)

GROUP BY

ME.DEVOLUCAO

,M.LIQU_ID

,M.LIQU_EMP_ID

,M.LIQU_FRO_ID

,M.LIQU_DTA_LIB

,M.LIQU_DTA_EMIS

ORDER BY

M.LIQU_DTA_LIB

,M.LIQU_EMP_ID

,M.LIQU_DTA_EMIS

 

que me retorna o resultado:

 

LIQU_DTA_LIB SAIDA DEVOLUCAO

01/01/2011 520 5

01/01/2011 300 4

02/01/2011 457 10

02/01/2011 635 7

02/01/2011 563 25

 

Eao eu gostaria de somar todos as saidas e devoluçoes q fossem na mesma data pra poder me voltar assim:

 

LIQU_DTA_LIB SAIDA DEVOLUCAO

01/01/2011 820 9

02/01/2011 1655 42

 

como eu poderia fazer para retornar dessa forma ?

 

Obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta colocar um sum na linha "ME.DEVOLUCAO". Assim ",SUM(ME.DEVOLUCAO) DEVOLUCAO".

E no Group by, deixa apenas o "M.LIQU_DTA_LIB". Retira o resto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta colocar um sum na linha "ME.DEVOLUCAO". Assim ",SUM(ME.DEVOLUCAO) DEVOLUCAO".

E no Group by, deixa apenas o "M.LIQU_DTA_LIB". Retira o resto

 

 

Ate rodou a query, as datas foram concateas, ams os valoers nao bateram, o numero de devoluçoes ficou maior q o das saidas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não faz sentido. você montou assim:

 

SELECT

M.LIQU_DTA_LIB

,SUM(L.LIQP_QTDE_SAI) AS SAIDA

,SUM(ME.DEVOLUCAO) DEVOLUCAO

...

 

GROUP BY

M.LIQU_DTA_LIB

ORDER BY

...

 

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não faz sentido. você montou assim:

 

SELECT

M.LIQU_DTA_LIB

,SUM(L.LIQP_QTDE_SAI) AS SAIDA

,SUM(ME.DEVOLUCAO) DEVOLUCAO

...

 

GROUP BY

M.LIQU_DTA_LIB

ORDER BY

...

 

?

 

exato

 

SELECT

M.LIQU_DTA_LIB

,SUM(L.LIQP_QTDE_SAI) AS SAIDA

,SUM(ME.DEVOLUCAO) AS DEVOLUCAO

 

 

GROUP BY

M.LIQU_DTA_LIB

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ajuda do Carbonera, atendeu sua necessidade?

 

Nao funcionou como deveria, a logica dele eh a mesma da minha, mas os valores da devoluçao estao voltando absurdos e em muitos casos muito maiores q os valores da saida.

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT LIQU_DTA_LIB,
SUM(SAIDA) SAIDA,
SUM (DEVOLUCAO) DEVOLUCAO
FROM
(
SELECT
M.LIQU_DTA_LIB
,SUM(L.LIQP_QTDE_SAI) AS SAIDA
,ME.DEVOLUCAO
FROM
LIQUIDACAO M
,LIQUIDACAO_P L
,GENER$V G
,(SELECT
E.MOVE_MOVE_DOCUM AS MEDOCUM
,E.MOVE_MOVE_EMP_ID AS MEEMP_ID
,SUM(E.MOVE_QTDE) AS DEVOLUCAO
FROM
MOV_ESTOQUE_D E
WHERE
E.MOVE_MOVE_OPER_E_ID = 2
AND E.MOVE_PROD_EMP_ID = 12
GROUP BY
E.MOVE_MOVE_DOCUM
,E.MOVE_MOVE_EMP_ID
,E.MOVE_DTA_CAD) ME
WHERE
(G.GEN_ID (+) = M.LIQU_GEN_ID)
AND (G.GEN_TGEN_ID (+) = M.LIQU_GEN_TGEN_ID)
AND (G.GEN_EMP_ID (+) = M.LIQU_GEN_EMP_ID)
AND (TRUNC(M.LIQU_DTA_EMIS) >= TO_DATE('01/03/2011','DD/MM/YYYY'))
AND (TRUNC(M.LIQU_DTA_EMIS) <= TO_DATE('31/03/2011','DD/MM/YYYY'))
AND M.LIQU_EMP_ID = '12'
AND M.LIQU_DTA_LIB IS NOT NULL
AND L.LIQP_LIQU_ID = M.LIQU_ID
AND ME.MEEMP_ID = M.LIQU_EMP_ID
AND ME.MEDOCUM = TO_CHAR(M.LIQU_ID)
GROUP BY
ME.DEVOLUCAO
,M.LIQU_ID
,M.LIQU_EMP_ID
,M.LIQU_FRO_ID
,M.LIQU_DTA_LIB
,M.LIQU_DTA_EMIS
) 
GROUP BY LIQU_DTA_LIB
ORDER BY 1,2,3

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT LIQU_DTA_LIB,
SUM(SAIDA) SAIDA,
SUM (DEVOLUCAO) DEVOLUCAO
FROM
(
SELECT
M.LIQU_DTA_LIB
,SUM(L.LIQP_QTDE_SAI) AS SAIDA
,ME.DEVOLUCAO
FROM
LIQUIDACAO M
,LIQUIDACAO_P L
,GENER$V G
,(SELECT
E.MOVE_MOVE_DOCUM AS MEDOCUM
,E.MOVE_MOVE_EMP_ID AS MEEMP_ID
,SUM(E.MOVE_QTDE) AS DEVOLUCAO
FROM
MOV_ESTOQUE_D E
WHERE
E.MOVE_MOVE_OPER_E_ID = 2
AND E.MOVE_PROD_EMP_ID = 12
GROUP BY
E.MOVE_MOVE_DOCUM
,E.MOVE_MOVE_EMP_ID
,E.MOVE_DTA_CAD) ME
WHERE
(G.GEN_ID (+) = M.LIQU_GEN_ID)
AND (G.GEN_TGEN_ID (+) = M.LIQU_GEN_TGEN_ID)
AND (G.GEN_EMP_ID (+) = M.LIQU_GEN_EMP_ID)
AND (TRUNC(M.LIQU_DTA_EMIS) >= TO_DATE('01/03/2011','DD/MM/YYYY'))
AND (TRUNC(M.LIQU_DTA_EMIS) <= TO_DATE('31/03/2011','DD/MM/YYYY'))
AND M.LIQU_EMP_ID = '12'
AND M.LIQU_DTA_LIB IS NOT NULL
AND L.LIQP_LIQU_ID = M.LIQU_ID
AND ME.MEEMP_ID = M.LIQU_EMP_ID
AND ME.MEDOCUM = TO_CHAR(M.LIQU_ID)
GROUP BY
ME.DEVOLUCAO
,M.LIQU_ID
,M.LIQU_EMP_ID
,M.LIQU_FRO_ID
,M.LIQU_DTA_LIB
,M.LIQU_DTA_EMIS
) 
GROUP BY LIQU_DTA_LIB
ORDER BY 1,2,3

 

 

 

Valeu cara, funcionou perfeitamente, ainda nao identifiquei onde eu tava errando, vou dar uma analisada melhor no codigo.

Abraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei sua query original como base para uma tabela virtual, deve existir uma solução melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei sua query original como base para uma tabela virtual, deve existir uma solução melhor.

você usou 2 subquery neh, se tem soluçao melhor eu nao sei, mas essa me serve perfeitamente.

mais uma vez obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.