GARANTIR DESCONTO

Fórum Ajuda em uma SQL #51989

04/08/2005

0

Olá, tenho a seguinte SQL:
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

Titanius

Responder

Posts

04/08/2005

Beppe

Tente cri.valor - cri.valor_pago as ValorAberto.


Responder

Gostei + 0

04/08/2005

Titanius

Valeu, :D
parou de dar erro, e a coluna apareceu, mas ela está vindo NULL... :(




[]s


Responder

Gostei + 0

04/08/2005

Sremulador

se algum campo para calculo estiver nulo o resultado final será nulo, antes de fazer o calculo você deve transformar...


Responder

Gostei + 0

04/08/2005

Titanius

O interessante é que também usei o [b:0460d44a31]nullif[/b:0460d44a31] e mesmo assim ainda continua vindo nulo... :(


Responder

Gostei + 0

04/08/2005

Gandalf.nho

Tente usar o COALESCE para transformar o valor de NULL para 0


Responder

Gostei + 0

04/08/2005

Titanius

blz gandalf.nho, funcionou perfeitamente... obrigado


Responder

Gostei + 0

04/08/2005

Beppe

Vou tentar explicar a lógica de NullIf e Coalesce, que são funções opostas.

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar