Fórum Saldo Mês Anterior #61095
17/03/2010
0
Bom dia a todos por gentileza estou com um problema tenho uma tabela HISTORICO.
TABLE HISTORICO (
HIS_CODIGO INTEGER NOT NULL,
HIS_CONTA VARCHAR(20) ,
HIS_DESCRICAO VARCHAR(200) ,
HIS_TIPO TIPO 'C' ou 'D',
HIS_DATA DATE,
HIS_VALOR NUMERIC(15, 2)); Tenho a instrução sql abaixo que me traz o total de Creditos e de Debitos e o Saldo. SELECT EXTRACT (MONTH FROM HIS_DATA) AS MES, EXTRACT (YEAR FROM HIS_DATA) AS ANO,
/*SUM(HIS_VALOR) AS TOTAL,*/
SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)) AS CREDITO,
SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)) AS DEBITO,
SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)) - SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)) AS SALDO
FROM HISTORICO HIS
WHERE HIS.HIS_DATA BETWEEN '11/01/2009' AND '11/30/2009'
GROUP BY ANO, MES Minha duvida é a seguinte tem como eu pachar através da data inicial e final puchar o saldo do mes anterior por exemplo como esta ai 01/11/2009 a 30/11/2009 teria que me puchar tambem 01/10/2009 a 31/10/2009 sendo o saldo. Estou usando o Fariberd 2.1 no Windows. Obrigado pela Atenção
HIS_CODIGO INTEGER NOT NULL,
HIS_CONTA VARCHAR(20) ,
HIS_DESCRICAO VARCHAR(200) ,
HIS_TIPO TIPO 'C' ou 'D',
HIS_DATA DATE,
HIS_VALOR NUMERIC(15, 2)); Tenho a instrução sql abaixo que me traz o total de Creditos e de Debitos e o Saldo. SELECT EXTRACT (MONTH FROM HIS_DATA) AS MES, EXTRACT (YEAR FROM HIS_DATA) AS ANO,
/*SUM(HIS_VALOR) AS TOTAL,*/
SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)) AS CREDITO,
SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)) AS DEBITO,
SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)) - SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)) AS SALDO
FROM HISTORICO HIS
WHERE HIS.HIS_DATA BETWEEN '11/01/2009' AND '11/30/2009'
GROUP BY ANO, MES Minha duvida é a seguinte tem como eu pachar através da data inicial e final puchar o saldo do mes anterior por exemplo como esta ai 01/11/2009 a 30/11/2009 teria que me puchar tambem 01/10/2009 a 31/10/2009 sendo o saldo. Estou usando o Fariberd 2.1 no Windows. Obrigado pela Atenção
Wilson Moraes
Curtir tópico
+ 0
Responder
Posts
17/03/2010
Emerson Nascimento
veja se esta instrução funciona:
SELECT
(SELECT
COALESCE(SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)),0) -
COALESCE(SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)),0)
FROM HISTORICO
WHERE HIS_DATA < '11/01/2009'
) AS SALDOANTERIOR,
EXTRACT (MONTH FROM HIS_DATA) AS MES,
EXTRACT (YEAR FROM HIS_DATA) AS ANO,
COALESCE(SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)),0) AS CREDITO,
COALESCE(SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)),0) AS DEBITO,
COALESCE(SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)),0) -
COALESCE(SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)),0) AS SALDO
FROM
HISTORICO HIS
WHERE
HIS.HIS_DATA BETWEEN '11/01/2009' AND '11/30/2009'
GROUP
BY ANO, MES
SELECT
(SELECT
COALESCE(SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)),0) -
COALESCE(SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)),0)
FROM HISTORICO
WHERE HIS_DATA < '11/01/2009'
) AS SALDOANTERIOR,
EXTRACT (MONTH FROM HIS_DATA) AS MES,
EXTRACT (YEAR FROM HIS_DATA) AS ANO,
COALESCE(SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)),0) AS CREDITO,
COALESCE(SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)),0) AS DEBITO,
COALESCE(SUM((CASE WHEN HIS_TIPO = 'C' THEN HIS_VALOR ELSE 0 END)),0) -
COALESCE(SUM((CASE WHEN HIS_TIPO = 'D' THEN HIS_VALOR ELSE 0 END)),0) AS SALDO
FROM
HISTORICO HIS
WHERE
HIS.HIS_DATA BETWEEN '11/01/2009' AND '11/30/2009'
GROUP
BY ANO, MES
Responder
Gostei + 0
17/03/2010
Wilson Moraes
Emerson Obrigado era isso que eu queria.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)