Ajuda em uma SQL
Olá, tenho a seguinte SQL:
Eu sei que o erro esta em [b:697d17d6e0](select (cri.valor - cri.valor_pago) into ValorAberto)[/b:697d17d6e0], coloquei pra exemplificar o que eu queria, era pegar o cri.Valor e diminuir do cri.Valor_Pago, e me mostrar outra coluna, com o resultado,
Tem como fazer isso?
Desde já agradeço
select cri.*, vp.qnt_parcela TotalParcela, cl.nome NomeCliente, case when cri.tipo_doc = 1 then ´Duplicata´ when cri.tipo_doc = 2 then ´Promissória´ when cri.tipo_doc = 3 then ´Cheque´ when cri.tipo_doc = 4 then ´Cartão´ when cri.tipo_doc = 5 then ´Boleto´ when cri.tipo_doc = 6 then ´Carnê´ when cri.tipo_doc = 7 then ´Dinheiro´ end as DescTipoDoc, (select (cri.valor - cri.valor_pago) into ValorAberto) from conta_receber_itens cri left join conta_receber cr on (cr.idconta_receber = cri.idconta_receber) left join vencimento_parcela vp on (vp.idvencimento = cr.idvencimento) left join cliente cl on (cl.idcliente = cr.idcliente) left join cheque ch on (ch.idcheque = cri.idcheque) where (cri.data_vencimento between :PDataInicio and :PDataFim)
Eu sei que o erro esta em [b:697d17d6e0](select (cri.valor - cri.valor_pago) into ValorAberto)[/b:697d17d6e0], coloquei pra exemplificar o que eu queria, era pegar o cri.Valor e diminuir do cri.Valor_Pago, e me mostrar outra coluna, com o resultado,
Tem como fazer isso?
Desde já agradeço
Titanius
Curtidas 0
Respostas
Beppe
04/08/2005
Tente cri.valor - cri.valor_pago as ValorAberto.
GOSTEI 0
Titanius
04/08/2005
Valeu, :D
parou de dar erro, e a coluna apareceu, mas ela está vindo NULL... :(
[]s
parou de dar erro, e a coluna apareceu, mas ela está vindo NULL... :(
[]s
GOSTEI 0
Sremulador
04/08/2005
se algum campo para calculo estiver nulo o resultado final será nulo, antes de fazer o calculo você deve transformar...
GOSTEI 0
Titanius
04/08/2005
O interessante é que também usei o [b:0460d44a31]nullif[/b:0460d44a31] e mesmo assim ainda continua vindo nulo... :(
GOSTEI 0
Gandalf.nho
04/08/2005
Tente usar o COALESCE para transformar o valor de NULL para 0
GOSTEI 0
Titanius
04/08/2005
blz gandalf.nho, funcionou perfeitamente... obrigado
GOSTEI 0
Beppe
04/08/2005
Vou tentar explicar a lógica de NullIf e Coalesce, que são funções opostas.
Também dá pra replicar a lógico com o case do SQL.
function Coalesce(const A: array of Variant): Variant; var I: Integer; begin Result := A[0]; for I := 1 to High(A) do if Result = Null then Result := A[I] else Break; end; function NullIf(const X, Y: Variant): Variant; begin if X = Y then Result := Null else Result := X; end;
Também dá pra replicar a lógico com o case do SQL.
GOSTEI 0