SubQuery
Ola Boa tarde galera!
to sofrendo mto aki com um select danado, e já quase doido, venho procurar ajuda hehe ...
Tenho um tabela que ja está estruturada e não podemos mais mexer nela, segue a estrutura principal:
Precisava que o SQL me retornasse alguma 2 Colunas:
(Entradas - Saidas) ... Preciso verificar, somar os valores agrupando pelo campo TIPO ...
Digamos que a tabela estivesse com os seguintes registros:
Assim, o SQL teria q me retornar isto:
alguem pode me ajudar ???
to sofrendo mto aki com um select danado, e já quase doido, venho procurar ajuda hehe ...
Tenho um tabela que ja está estruturada e não podemos mais mexer nela, segue a estrutura principal:
[b]TAB_MOV[/b] ID_MOV HISTORICO TIPO (0 OU 1 -- SE FOR 0 É ENTRADA, SE FOR 1 É SAIDA) VALOR
Precisava que o SQL me retornasse alguma 2 Colunas:
(Entradas - Saidas) ... Preciso verificar, somar os valores agrupando pelo campo TIPO ...
Digamos que a tabela estivesse com os seguintes registros:
ID_MOV ---> HISTORICO ----> TIPO ---> VALOR
1................. TESTE................0..............5,00
2.................TESTE.................1..............10,00
3..................TESTE................0..............4,00
Assim, o SQL teria q me retornar isto:
Entradas --- Saidas
9,00 ..........10,00
alguem pode me ajudar ???
Output
Curtidas 0
Respostas
Marcelo.bastos
08/09/2007
Output,
abaixo vai um exemplo de como você pode conseguir esse resultado na consulta.
SELECT
SUM(CASE WHEN TIPO = 0 THEN VALOR END) AS Entradas,
SUM(CASE WHEN TIPO = 1 THEN VALOR END) AS Saidas
FROM TAB_MOV
Valeu!
abaixo vai um exemplo de como você pode conseguir esse resultado na consulta.
SELECT
SUM(CASE WHEN TIPO = 0 THEN VALOR END) AS Entradas,
SUM(CASE WHEN TIPO = 1 THEN VALOR END) AS Saidas
FROM TAB_MOV
Valeu!
GOSTEI 0
Output
08/09/2007
ow ...
coisa fina [b:784a2d07cf]marcelo.bastos[/b:784a2d07cf]
vlw kra ... exatamente isto q eu procurava ...
abraço
coisa fina [b:784a2d07cf]marcelo.bastos[/b:784a2d07cf]
vlw kra ... exatamente isto q eu procurava ...
abraço
GOSTEI 0
Output
08/09/2007
Blz ... agora aproveitando tópico ...
outro select parecido ... Segue :
Desta forma ele ta me retornando isto:
Isto ta errado, como eu pedi pra agrupar por M.ID_PLANODECONTAS ele deveria somar os dois primeiros registros acima citados ....
Alguem poderia me ajudar nessa ????
PS: O Primeiro Registro tinha ID=100 porem foi covertido pra 101 no select acima usando o CASE
outro select parecido ... Segue :
SELECT P.NOMEPLANODECONTAS, (CASE M.ID_PLANODECONTAS WHEN 100 THEN 101 ELSE M.ID_PLANODECONTAS END) AS ID_PLANODECONTAS, SUM(CASE WHEN M.TIPO = 0 THEN M.VALOR END) AS ENTRADAS, SUM(CASE WHEN M.TIPO = 1 THEN M.VALOR END) AS SAIDAS FROM MOVIMENTOLANC M INNER JOIN TURNOS T ON T.ID_TURNOS = M.ID_TURNOS INNER JOIN PLANODECONTAS P ON P.ID_PLANODECONTAS= M.ID_PLANODECONTAS WHERE M.DTACONTA = ´2007-09-11´ AND P.NOMEPLANODECONTAS LIKE ´¬VISA¬´ GROUP BY M.ID_PLANODECONTAS, P.NOMEPLANODECONTAS ORDER BY M.ID_PLANODECONTAS, P.NOMEPLANODECONTAS
Desta forma ele ta me retornando isto:
NOMEPLANODECONTAS - ID_PLANODECONTAS - ENTRADAS - SAIDAS
DESPESAS CARTAO VISA - 101 - 2,55
CARTAO VISA - 101 - 99,45
CARTAO MASTERCARD - 130 - 30,00
Isto ta errado, como eu pedi pra agrupar por M.ID_PLANODECONTAS ele deveria somar os dois primeiros registros acima citados ....
Alguem poderia me ajudar nessa ????
PS: O Primeiro Registro tinha ID=100 porem foi covertido pra 101 no select acima usando o CASE
GOSTEI 0
Emerson Nascimento
08/09/2007
veja se funciona: dê um nome diferente ao campo e tente agrupar por esse novo campo.
se isto não der certo, faça uso de sub-select:
SELECT P.NOMEPLANODECONTAS, (CASE M.ID_PLANODECONTAS WHEN 100 THEN 101 ELSE M.ID_PLANODECONTAS END) AS IDPLANODECONTAS, -- note que não tem "_" SUM(CASE WHEN M.TIPO = 0 THEN M.VALOR ELSE 0.00 END) AS ENTRADAS, SUM(CASE WHEN M.TIPO = 1 THEN M.VALOR ELSE 0.00 END) AS SAIDAS FROM MOVIMENTOLANC M INNER JOIN TURNOS T ON T.ID_TURNOS = M.ID_TURNOS INNER JOIN PLANODECONTAS P ON P.ID_PLANODECONTAS= M.ID_PLANODECONTAS WHERE M.DTACONTA = ´2007-09-11´ AND P.NOMEPLANODECONTAS LIKE ´¬VISA¬´ GROUP BY IDPLANODECONTAS, P.NOMEPLANODECONTAS ORDER BY IDPLANODECONTAS, P.NOMEPLANODECONTAS
se isto não der certo, faça uso de sub-select:
SELECT NOMEPLANODECONTAS, ID_PLANODECONTAS, SUM(ENTRADAS) ENTRADAS, SUM(SAIDAS) SAIDAS FROM (SELECT P.NOMEPLANODECONTAS, (CASE M.ID_PLANODECONTAS WHEN 100 THEN 101 ELSE M.ID_PLANODECONTAS END) AS ID_PLANODECONTAS, SUM(CASE WHEN M.TIPO = 0 THEN M.VALOR ELSE 0.00 END) AS ENTRADAS, SUM(CASE WHEN M.TIPO = 1 THEN M.VALOR ELSE 0.00 END) AS SAIDAS FROM MOVIMENTOLANC M INNER JOIN TURNOS T ON T.ID_TURNOS = M.ID_TURNOS INNER JOIN PLANODECONTAS P ON P.ID_PLANODECONTAS= M.ID_PLANODECONTAS WHERE M.DTACONTA = ´2007-09-11´ AND P.NOMEPLANODECONTAS LIKE ´¬VISA¬´ GROUP BY M.ID_PLANODECONTAS, P.NOMEPLANODECONTAS) TABELA_TEMP GROUP BY NOMEPLANODECONTAS, ID_PLANODECONTAS ORDER BY ID_PLANODECONTAS, NOMEPLANODECONTAS
GOSTEI 0
Output
08/09/2007
Putz ... pior q naum deu cara ...
Deu Mesma coisa, ....
To quase doido ja com isto hehee...
Desde ja agradeço
Deu Mesma coisa, ....
NOMEPLANODECONTAS ---- ID_PLANODECONTAS - ENTRADAS - SAIDAS
DESPESAS CARTAO VISA - 101 ---------------------- 2,55 ---------0,00
CARTAO VISA - -------------101 -----------------------99,45---------0,00
CARTAO MASTERCARD -----130 -----------------------30,00--------0,00
To quase doido ja com isto hehee...
Desde ja agradeço
GOSTEI 0
Emerson Nascimento
08/09/2007
não está funcionando por causa do campo NOMEPLANODECONTAS
tente assim:
tente assim:
SELECT max(NOMEPLANODECONTAS) NOMEPLANODECONTAS, ID_PLANODECONTAS, SUM(ENTRADAS) ENTRADAS, SUM(SAIDAS) SAIDAS FROM (SELECT P.NOMEPLANODECONTAS, (CASE M.ID_PLANODECONTAS WHEN 100 THEN 101 ELSE M.ID_PLANODECONTAS END) AS ID_PLANODECONTAS, SUM(CASE WHEN M.TIPO = 0 THEN M.VALOR ELSE 0.00 END) AS ENTRADAS, SUM(CASE WHEN M.TIPO = 1 THEN M.VALOR ELSE 0.00 END) AS SAIDAS FROM MOVIMENTOLANC M INNER JOIN TURNOS T ON T.ID_TURNOS = M.ID_TURNOS INNER JOIN PLANODECONTAS P ON P.ID_PLANODECONTAS= M.ID_PLANODECONTAS WHERE M.DTACONTA = ´2007-09-11´ AND P.NOMEPLANODECONTAS LIKE ´¬VISA¬´ GROUP BY M.ID_PLANODECONTAS, P.NOMEPLANODECONTAS) TABELA_TEMP GROUP BY ID_PLANODECONTAS ORDER BY 1
GOSTEI 0
Output
08/09/2007
Perfeito kra ...
vc salvou minha vida hehehehehe....
naum sabe o qto eu fiko agradecido por isto ...
Vc é mesmo mto fera!
Vlw msm ... Forte abraço,..
vc salvou minha vida hehehehehe....
naum sabe o qto eu fiko agradecido por isto ...
Vc é mesmo mto fera!
Vlw msm ... Forte abraço,..
GOSTEI 0