SQL não funciona no Firebird
Prezados,
O Script abaixo não roda no firebird, mas roda perfeitamente nos bancos SQL Server e Sybase. Alguem pode me ajudar a compatibilizar para o firebird ? estou utilizando a versão 2.1.
select plano_conta.CD_PADRAO,
COALESCE(sum(lanc_temp.SA),0) as saldo_anterior,
COALESCE(sum(lanc_temp.D),0) as DEBITOS,
COALESCE(sum(lanc_temp.C),0) as CREDITOS,
( COALESCE(sum(lanc_temp.SA),0) + COALESCE(sum(lanc_temp.D),0)+ COALESCE(sum(lanc_temp.C),0) ) AS SALDO_ATUAL
from plano_conta
left join (select PLANO_CONTA.CD_EMPRESA, PLANO_CONTA.CD_PADRAO,
(CASE WHEN DT_LANCAMENTO < ´01-12-2008´ THEN vl_lancamento ELSE 0 END) SA,
(CASE WHEN DT_LANCAMENTO BETWEEN ´01-12-2008´ AND ´31-12-2008´ AND VL_LANCAMENTO < 0 THEN vl_lancamento ELSE 0 END) D,
(CASE WHEN DT_LANCAMENTO BETWEEN ´01-12-2008´ AND ´31-12-2008´ AND VL_LANCAMENTO > 0 THEN vl_lancamento ELSE 0 END) C,
coalesce(LANCAMENTO_CONTABIL.VL_LANCAMENTO,0) vl_lancamento,
DT_LANCAMENTO
from PLANO_CONTA
left join lancamento_contabil on PLANO_CONTA.cd_empresa = LANCAMENTO_CONTABIL.cd_empresa
and plano_conta.cd_reduzido = LANCAMENTO_CONTABIL.cd_reduzido
and PLANO_CONTA.CD_EMPRESA = LANCAMENTO_CONTABIL.CD_EMPRESA
where PLANO_CONTA.CD_EMPRESA = 10
) as lanc_temp
on lanc_temp.CD_PADRAO like PLANO_CONTA.cd_padrao + ´¬´
and lanc_temp.CD_EMPRESA = PLANO_CONTA.CD_EMPRESA
group by plano_conta.CD_PADRAO
order by plano_conta.CD_PADRAO
O Script abaixo não roda no firebird, mas roda perfeitamente nos bancos SQL Server e Sybase. Alguem pode me ajudar a compatibilizar para o firebird ? estou utilizando a versão 2.1.
select plano_conta.CD_PADRAO,
COALESCE(sum(lanc_temp.SA),0) as saldo_anterior,
COALESCE(sum(lanc_temp.D),0) as DEBITOS,
COALESCE(sum(lanc_temp.C),0) as CREDITOS,
( COALESCE(sum(lanc_temp.SA),0) + COALESCE(sum(lanc_temp.D),0)+ COALESCE(sum(lanc_temp.C),0) ) AS SALDO_ATUAL
from plano_conta
left join (select PLANO_CONTA.CD_EMPRESA, PLANO_CONTA.CD_PADRAO,
(CASE WHEN DT_LANCAMENTO < ´01-12-2008´ THEN vl_lancamento ELSE 0 END) SA,
(CASE WHEN DT_LANCAMENTO BETWEEN ´01-12-2008´ AND ´31-12-2008´ AND VL_LANCAMENTO < 0 THEN vl_lancamento ELSE 0 END) D,
(CASE WHEN DT_LANCAMENTO BETWEEN ´01-12-2008´ AND ´31-12-2008´ AND VL_LANCAMENTO > 0 THEN vl_lancamento ELSE 0 END) C,
coalesce(LANCAMENTO_CONTABIL.VL_LANCAMENTO,0) vl_lancamento,
DT_LANCAMENTO
from PLANO_CONTA
left join lancamento_contabil on PLANO_CONTA.cd_empresa = LANCAMENTO_CONTABIL.cd_empresa
and plano_conta.cd_reduzido = LANCAMENTO_CONTABIL.cd_reduzido
and PLANO_CONTA.CD_EMPRESA = LANCAMENTO_CONTABIL.CD_EMPRESA
where PLANO_CONTA.CD_EMPRESA = 10
) as lanc_temp
on lanc_temp.CD_PADRAO like PLANO_CONTA.cd_padrao + ´¬´
and lanc_temp.CD_EMPRESA = PLANO_CONTA.CD_EMPRESA
group by plano_conta.CD_PADRAO
order by plano_conta.CD_PADRAO
Harleydk
Curtidas 0
Respostas
Afarias
20/10/2009
qual o erro pra facilitar?
T+
T+
GOSTEI 0
Harleydk
20/10/2009
O erro era esse:
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.
Consegui descobrir e resolver o problema:
Na linha: on lanc_temp.CD_PADRAO like PLANO_CONTA.cd_padrao + ´¬´
alterei o caracter de concatenação do SQLServer (+) para || e funcionou.
Valeu
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.
Consegui descobrir e resolver o problema:
Na linha: on lanc_temp.CD_PADRAO like PLANO_CONTA.cd_padrao + ´¬´
alterei o caracter de concatenação do SQLServer (+) para || e funcionou.
Valeu
GOSTEI 0
Afarias
20/10/2009
| alterei o caracter de concatenação do SQLServer (+) para || e funcionou.
:D blzz
T+
:D blzz
T+
GOSTEI 0