Ajuda com Select avançado
Senhores, estou com o seguinte select
SELECT ID, BX_PAGAMENTO, ESPECIE_ID, CLASSIFICACAO_ID, MOVIMENTO_ID, STATUS_ID, DESCRICAO_ID, REG_HISTORICO, CLIENTE_ID, BX_VALOR_LIQUIDO, CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1 THEN '3'
WHEN CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C') THEN '3'
END AS MOVIMENTO
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 and BX_PAGAMENTO>=:INICIO AND BX_PAGAMENTO<=:FIM
ORDER BY BX_PAGAMENTO DESC
Gostaria de dar um GROUP BY MOVIMENTO, sendo que movimento não faz parte da minha tabela e sim a associação do resultado case.
Alguém pode dar uma luz?
SELECT ID, BX_PAGAMENTO, ESPECIE_ID, CLASSIFICACAO_ID, MOVIMENTO_ID, STATUS_ID, DESCRICAO_ID, REG_HISTORICO, CLIENTE_ID, BX_VALOR_LIQUIDO, CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1 THEN '3'
WHEN CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C') THEN '3'
END AS MOVIMENTO
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 and BX_PAGAMENTO>=:INICIO AND BX_PAGAMENTO<=:FIM
ORDER BY BX_PAGAMENTO DESC
Gostaria de dar um GROUP BY MOVIMENTO, sendo que movimento não faz parte da minha tabela e sim a associação do resultado case.
Alguém pode dar uma luz?
Rodrigo Pagani
Curtidas 0
Respostas
Wilson Junior
01/06/2010
Coloque "GROUP BY 11", pois 11 é o índice da ordem do campo no seu SQL (o índice começa em 1).
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Rodrigo Pagani
01/06/2010
coloquei group by 11 e está dando o seguinte erro
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
como resolver, sendo que eu quero o group by somente com o indice 11?
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
como resolver, sendo que eu quero o group by somente com o indice 11?
GOSTEI 0
Rodrigo Pagani
01/06/2010
Estou tentando fazer a soma de um campo e usar o group by, mas mesmo assim dá erro
Select CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1) OR (CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C')) THEN '3'
END AS MOVIMENTO, SUM(BX_VALOR_LIQUIDO)
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 AND BX_PAGAMENTO>=:INICIO AND BX_PAGAMENTO<=:FIM
GROUP BY 1
continua erro
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Select CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1) OR (CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C')) THEN '3'
END AS MOVIMENTO, SUM(BX_VALOR_LIQUIDO)
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 AND BX_PAGAMENTO>=:INICIO AND BX_PAGAMENTO<=:FIM
GROUP BY 1
continua erro
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
GOSTEI 0
Wilson Junior
01/06/2010
Executei no Firebird 2.1 e não retornou erro. Qual a versão do Firebird você está utilizando?
GOSTEI 0
Rodrigo Pagani
01/06/2010
Estou usando a versão 1.5
Seria melhor eu mudar a versão?
Seria melhor eu mudar a versão?
GOSTEI 0
Rodrigo Pagani
01/06/2010
Mudei para versão 2.1 e executei o seguinte select
Select CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1) OR (CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C')) THEN '3'
END AS MOVIMENTO, SUM(BX_VALOR_LIQUIDO)
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 AND BX_PAGAMENTO>='5/25/2010' AND BX_PAGAMENTO<='5/31/2010'
GROUP BY 1
Deu erro
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Então fiz o seguinte select mudando o group by
Select CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1) OR (CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C')) THEN '3'
END AS MOVIMENTO, SUM(BX_VALOR_LIQUIDO)
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 AND BX_PAGAMENTO>='5/25/2010' AND BX_PAGAMENTO<='5/31/2010'
GROUP BY 1, CLASSIFICACAO_ID, DESCRICAO_ID, CLIENTE_ID
e me retornou o seguinte
Mas eu preciso do resultado
Movimento 1=446349,27
Movimento 2=3500,00
Movimento 3=1516,80
Select CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1) OR (CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C')) THEN '3'
END AS MOVIMENTO, SUM(BX_VALOR_LIQUIDO)
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 AND BX_PAGAMENTO>='5/25/2010' AND BX_PAGAMENTO<='5/31/2010'
GROUP BY 1
Deu erro
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Então fiz o seguinte select mudando o group by
Select CASE
WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=2 THEN '1'
WHEN CLASSIFICACAO_ID=7 THEN '2'
WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID=1) OR (CLASSIFICACAO_ID=16 AND DESCRICAO_ID=1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE='C')) THEN '3'
END AS MOVIMENTO, SUM(BX_VALOR_LIQUIDO)
from FINANCEIRO
where STATUS_ID<>0 AND BX_VALOR_LIQUIDO<>0 AND BX_PAGAMENTO>='5/25/2010' AND BX_PAGAMENTO<='5/31/2010'
GROUP BY 1, CLASSIFICACAO_ID, DESCRICAO_ID, CLIENTE_ID
e me retornou o seguinte
Mas eu preciso do resultado
Movimento 1=446349,27
Movimento 2=3500,00
Movimento 3=1516,80
GOSTEI 0
Wilson Junior
01/06/2010
Teste assim:
Espero ter colaborado.
SELECT CASE WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID = 2 THEN '1' WHEN CLASSIFICACAO_ID = 7 THEN '2' WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID = 1) OR (CLASSIFICACAO_ID = 16 AND DESCRICAO_ID = 1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE = 'C')) THEN '3' ELSE '0' END AS Movimento, SUM(CASE WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID = 2 THEN BX_VALOR_LIQUIDO WHEN CLASSIFICACAO_ID = 7 THEN BX_VALOR_LIQUIDO WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID = 1) OR (CLASSIFICACAO_ID = 16 AND DESCRICAO_ID = 1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE = 'C')) THEN BX_VALOR_LIQUIDO ELSE BX_VALOR_LIQUIDO END) AS Valor FROM FINANCEIRO WHERE STATUS_ID <> 0 AND BX_VALOR_LIQUIDO <> 0 AND BX_PAGAMENTO >= '5/25/2010' AND BX_PAGAMENTO <= '5/31/2010' GROUP BY 1
Espero ter colaborado.
GOSTEI 0
Emerson Nascimento
01/06/2010
tente assim:
select
CASE
WHEN (F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=2 THEN '1'
WHEN F.CLASSIFICACAO_ID=7 THEN '2'
WHEN ((F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=1) OR
(F.CLASSIFICACAO_ID=16 AND F.DESCRICAO_ID=1 AND CF.MODALIDADE = 'C') THEN '3'
END AS MOVIMENTO,
SUM(F.BX_VALOR_LIQUIDO)
from
FINANCEIRO F
left join
CLIFOR CF on CF.ID = F.CLIENTE_ID
where
F.STATUS_ID<>0 AND F.BX_VALOR_LIQUIDO<>0
AND F.BX_PAGAMENTO>='5/25/2010' AND F.BX_PAGAMENTO<='5/31/2010'
group by
1, F.CLASSIFICACAO_ID, F.DESCRICAO_ID
select
CASE
WHEN (F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=2 THEN '1'
WHEN F.CLASSIFICACAO_ID=7 THEN '2'
WHEN ((F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=1) OR
(F.CLASSIFICACAO_ID=16 AND F.DESCRICAO_ID=1 AND CF.MODALIDADE = 'C') THEN '3'
END AS MOVIMENTO,
SUM(F.BX_VALOR_LIQUIDO)
from
FINANCEIRO F
left join
CLIFOR CF on CF.ID = F.CLIENTE_ID
where
F.STATUS_ID<>0 AND F.BX_VALOR_LIQUIDO<>0
AND F.BX_PAGAMENTO>='5/25/2010' AND F.BX_PAGAMENTO<='5/31/2010'
group by
1, F.CLASSIFICACAO_ID, F.DESCRICAO_ID
GOSTEI 0
Rodrigo Pagani
01/06/2010
Continua dando o erro
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Só passa se eu colocar
group by 1, CLASSIFICACAO_ID, DESCRICAO_ID, CLIENTE_ID
Mas dai o resultado dá o mesmo que eu postei a imagem
Utilizando subselect tem como de resolver isso?
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Só passa se eu colocar
group by 1, CLASSIFICACAO_ID, DESCRICAO_ID, CLIENTE_ID
Mas dai o resultado dá o mesmo que eu postei a imagem
Utilizando subselect tem como de resolver isso?
GOSTEI 0
Rodrigo Pagani
01/06/2010
Com esse que você passou agora
select
CASE
WHEN (F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=2 THEN '1'
WHEN F.CLASSIFICACAO_ID=7 THEN '2'
WHEN ((F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=1) OR
(F.CLASSIFICACAO_ID=16 AND F.DESCRICAO_ID=1 AND CF.MODALIDADE = 'C') THEN '3'
END AS MOVIMENTO,
SUM(F.BX_VALOR_LIQUIDO)
from
FINANCEIRO F
left join
CLIFOR CF on CF.ID = F.CLIENTE_ID
where
F.STATUS_ID<>0 AND F.BX_VALOR_LIQUIDO<>0
AND F.BX_PAGAMENTO>='5/25/2010' AND F.BX_PAGAMENTO<='5/31/2010'
group by
1, F.CLASSIFICACAO_ID, F.DESCRICAO_ID
Deu certo group by 1
Obrigado pela ajuda, esse select é para um relatório, vou finalizar o relatório para ver se deu tudo certo
Mais uma vez Obrigado
select
CASE
WHEN (F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=2 THEN '1'
WHEN F.CLASSIFICACAO_ID=7 THEN '2'
WHEN ((F.CLASSIFICACAO_ID NOT IN (7,16)) AND F.DESCRICAO_ID=1) OR
(F.CLASSIFICACAO_ID=16 AND F.DESCRICAO_ID=1 AND CF.MODALIDADE = 'C') THEN '3'
END AS MOVIMENTO,
SUM(F.BX_VALOR_LIQUIDO)
from
FINANCEIRO F
left join
CLIFOR CF on CF.ID = F.CLIENTE_ID
where
F.STATUS_ID<>0 AND F.BX_VALOR_LIQUIDO<>0
AND F.BX_PAGAMENTO>='5/25/2010' AND F.BX_PAGAMENTO<='5/31/2010'
group by
1, F.CLASSIFICACAO_ID, F.DESCRICAO_ID
Deu certo group by 1
Obrigado pela ajuda, esse select é para um relatório, vou finalizar o relatório para ver se deu tudo certo
Mais uma vez Obrigado
GOSTEI 0
Wilson Junior
01/06/2010
SELECT Movimento, SUM(Valor) AS ValorSoma FROM (SELECT CASE WHEN (CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID = 2 THEN '1' WHEN CLASSIFICACAO_ID = 7 THEN '2' WHEN ((CLASSIFICACAO_ID NOT IN (7,16)) AND DESCRICAO_ID = 1) OR (CLASSIFICACAO_ID = 16 AND DESCRICAO_ID = 1 AND CLIENTE_ID IN (SELECT ID FROM CLIFOR WHERE MODALIDADE = 'C')) THEN '3' ELSE '0' END AS Movimento, BX_VALOR_LIQUIDO AS Valor FROM FINANCEIRO WHERE STATUS_ID <> 0 AND BX_VALOR_LIQUIDO <> 0 AND BX_PAGAMENTO >= '5/25/2010' AND BX_PAGAMENTO <= '5/31/2010') GROUP BY 1
Espero ter colaborado.
GOSTEI 0
Rodrigo Pagani
01/06/2010
Olá Wilson,
Estou fazendo um novo select para outro relatorio
SELECT DATA, SUM(ENTRADA) AS ENTRADA
FROM (SELECT BX_PAGAMENTO AS DATA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=1) THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=2) THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA,
MOVIMENTO_ID AS MOVIMENTO
FROM
FINANCEIRO)
WHERE MOVIMENTO=2
GROUP BY DATA
o resultado ele me traz
Data Entrada
24/05/2010 1298,53
25/05/2010 66,00
assim vai
Mas eu preciso do resultado assim
Data Entrada Total
24/05/2010 1298,53 1298,53
25/05/2010 66,00 1364,53
Preciso do campo Total e ele vai somando o total que eu tenho
Você pode me dar mai essa ajuda?
Estou fazendo um novo select para outro relatorio
SELECT DATA, SUM(ENTRADA) AS ENTRADA
FROM (SELECT BX_PAGAMENTO AS DATA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=1) THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=2) THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA,
MOVIMENTO_ID AS MOVIMENTO
FROM
FINANCEIRO)
WHERE MOVIMENTO=2
GROUP BY DATA
o resultado ele me traz
Data Entrada
24/05/2010 1298,53
25/05/2010 66,00
assim vai
Mas eu preciso do resultado assim
Data Entrada Total
24/05/2010 1298,53 1298,53
25/05/2010 66,00 1364,53
Preciso do campo Total e ele vai somando o total que eu tenho
Você pode me dar mai essa ajuda?
GOSTEI 0
Emerson Nascimento
01/06/2010
porque a subselect? não dá pra ser somente:
SELECT
BX_PAGAMENTO AS DATA,
CASE WHEN DESCRICAO_ID=1 THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN DESCRICAO_ID=2 THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA
FROM
FINANCEIRO
WHERE
REG_DELETED = 0 AND STATUS_ID <> 0 AND MOVIMENTO_ID = 2
GROUP BY
BX_PAGAMENTO
SELECT
BX_PAGAMENTO AS DATA,
CASE WHEN DESCRICAO_ID=1 THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN DESCRICAO_ID=2 THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA
FROM
FINANCEIRO
WHERE
REG_DELETED = 0 AND STATUS_ID <> 0 AND MOVIMENTO_ID = 2
GROUP BY
BX_PAGAMENTO
GOSTEI 0
Rodrigo Pagani
01/06/2010
Assim ele da erro no group by
GOSTEI 0
Eduardo
01/06/2010
Você tem usar os outros campos no Group By também e Order By também
Tenta aí
GOSTEI 0
Rodrigo Pagani
01/06/2010
Como eu faço para pegar o valor do registro anterior para coloca na soma?
GOSTEI 0
Rodrigo Pagani
01/06/2010
Estou fazendo um novo select para
outro relatorio
SELECT DATA, SUM(ENTRADA) AS ENTRADA
FROM (SELECT BX_PAGAMENTO AS DATA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=1) THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=2) THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA,
MOVIMENTO_ID AS MOVIMENTO
FROM
FINANCEIRO)
WHERE MOVIMENTO=2
GROUP BY DATA
o resultado ele me traz
Data Entrada
24/05/2010 1298,53
25/05/2010 66,00
assim vai
Mas eu preciso do resultado assim
Data Entrada Total
24/05/2010 1298,53 1298,53
25/05/2010 66,00 1364,53
Preciso do campo Total e ele vai somando o total que eu tenho
SELECT DATA, SUM(ENTRADA) AS ENTRADA
FROM (SELECT BX_PAGAMENTO AS DATA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=1) THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=2) THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA,
MOVIMENTO_ID AS MOVIMENTO
FROM
FINANCEIRO)
WHERE MOVIMENTO=2
GROUP BY DATA
o resultado ele me traz
Data Entrada
24/05/2010 1298,53
25/05/2010 66,00
assim vai
Mas eu preciso do resultado assim
Data Entrada Total
24/05/2010 1298,53 1298,53
25/05/2010 66,00 1364,53
Preciso do campo Total e ele vai somando o total que eu tenho
GOSTEI 0
Emerson Nascimento
01/06/2010
deve ser algo assim:
SELECT TAB.DATA, SUM(TAB.ENTRADA) AS ENTRADA,
(SELECT SUM(F.BX_VALOR_LIQUIDO) FROM FINANCEIRO F
WHERE F.REG_DELETED=0 AND F.STATUS_ID<>0
AND F.MOVIMENTO_ID=2 AND F.DESCRICAO_ID=1
AND F.DATA <= TAB.DATA)
FROM (SELECT BX_PAGAMENTO AS DATA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=1) THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=2) THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA,
MOVIMENTO_ID AS MOVIMENTO
FROM
FINANCEIRO) TAB
GROUP BY DATA
mas creio que a instrução:
SELECT
F1.BX_PAGAMENTO AS DATA,
(CASE WHEN F1.DESCRICAO_ID=1 THEN F1.BX_VALOR_LIQUIDO ELSE 0 END) AS ENTRADA,
(CASE WHEN F1.DESCRICAO_ID=2 THEN F1.BX_VALOR_LIQUIDO ELSE 0 END) AS SAIDA,
(SELECT SUM(F.BX_VALOR_LIQUIDO) FROM FINANCEIRO F
WHERE F.REG_DELETED = 0 AND F.STATUS_ID <> 0
AND F.MOVIMENTO_ID = 2 AND F.DESCRICAO_ID = 1
AND F.DATA <= F1.DATA) TOTAL_ENTRADA
(SELECT SUM(F.BX_VALOR_LIQUIDO) FROM FINANCEIRO F
WHERE F.REG_DELETED = 0 AND F.STATUS_ID <> 0
AND F.MOVIMENTO_ID = 2 AND F.DESCRICAO_ID = 2
AND F.DATA <= F1.DATA) TOTAL_SAIDA
FROM
FINANCEIRO F1
WHERE
F1.REG_DELETED = 0 AND F1.STATUS_ID <> 0 AND F1.MOVIMENTO_ID = 2
GROUP BY
F1.BX_PAGAMENTO
funcione sem problema.
SELECT TAB.DATA, SUM(TAB.ENTRADA) AS ENTRADA,
(SELECT SUM(F.BX_VALOR_LIQUIDO) FROM FINANCEIRO F
WHERE F.REG_DELETED=0 AND F.STATUS_ID<>0
AND F.MOVIMENTO_ID=2 AND F.DESCRICAO_ID=1
AND F.DATA <= TAB.DATA)
FROM (SELECT BX_PAGAMENTO AS DATA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=1) THEN BX_VALOR_LIQUIDO ELSE 0 END AS ENTRADA,
CASE WHEN (REG_DELETED=0 AND STATUS_ID<>0 AND MOVIMENTO_ID=2 AND DESCRICAO_ID=2) THEN BX_VALOR_LIQUIDO ELSE 0 END AS SAIDA,
MOVIMENTO_ID AS MOVIMENTO
FROM
FINANCEIRO) TAB
GROUP BY DATA
mas creio que a instrução:
SELECT
F1.BX_PAGAMENTO AS DATA,
(CASE WHEN F1.DESCRICAO_ID=1 THEN F1.BX_VALOR_LIQUIDO ELSE 0 END) AS ENTRADA,
(CASE WHEN F1.DESCRICAO_ID=2 THEN F1.BX_VALOR_LIQUIDO ELSE 0 END) AS SAIDA,
(SELECT SUM(F.BX_VALOR_LIQUIDO) FROM FINANCEIRO F
WHERE F.REG_DELETED = 0 AND F.STATUS_ID <> 0
AND F.MOVIMENTO_ID = 2 AND F.DESCRICAO_ID = 1
AND F.DATA <= F1.DATA) TOTAL_ENTRADA
(SELECT SUM(F.BX_VALOR_LIQUIDO) FROM FINANCEIRO F
WHERE F.REG_DELETED = 0 AND F.STATUS_ID <> 0
AND F.MOVIMENTO_ID = 2 AND F.DESCRICAO_ID = 2
AND F.DATA <= F1.DATA) TOTAL_SAIDA
FROM
FINANCEIRO F1
WHERE
F1.REG_DELETED = 0 AND F1.STATUS_ID <> 0 AND F1.MOVIMENTO_ID = 2
GROUP BY
F1.BX_PAGAMENTO
funcione sem problema.
GOSTEI 0
Rodrigo Pagani
01/06/2010
Senhores, muito obrigado pelas respostas, pois meu problema foi solucionado.
Agora a dúvida é como eu coloco este post como concluído?
GOSTEI 0
Carlos Mazzi
01/06/2010
Vou ver pra fechar pra vc. abracos++
GOSTEI 0