[RESOLVIDO]select case dentro de select

4 respostas
L

pessoal;

tenho a seguinte query que funciona:

SELECT distinct c.id_conta, c.nome_fornecedor, c.nome_produto, tp.nome_tipo_pagamento,
c.valor_total, c.qtd_parcelas, c.valor_parcelas,
(select his.valor_restante from historicorecebimentocontas his
where c.id_conta = his.id_conta order by his.dt_pagto desc limit 1) as valor_restante
FROM contaspagar c
inner join tipospagamentos tp on tp.id_tipo_pagamento = c.id_tipo_pagamento
left join historicorecebimentocontas h on h.id_conta = c.id_conta

e na coluna valor_restante é exibido da seguinte maneira:

valor_restante
0.00
null
null

devido a registros que não possuem ligação entre as tabelas historicorecebimentocontas e contaspagar.

e quando apresentar null eu quero exibir a coluna c.valor_total.

Alguém teria alguma sugestão ?

Obrigado.

4 Respostas

S

Já tentou assim???

SELECT distinct c.id_conta, c.nome_fornecedor, c.nome_produto, tp.nome_tipo_pagamento, c.valor_total, c.qtd_parcelas, c.valor_parcelas, (select ISNULL(his.valor_restante, c.valor_total) from historicorecebimentocontas his where c.id_conta = his.id_conta order by his.dt_pagto desc limit 1) as valor_restante FROM contaspagar c inner join tipospagamentos tp on tp.id_tipo_pagamento = c.id_tipo_pagamento left join historicorecebimentocontas h on h.id_conta = c.id_conta

Abraços…

L

Deu certo não !!!
o mysql acusa erro no comando ISNULL.

S

ahhhh… é MySQL, desculpa, este que passei é SQL Server

para o MySQL faz assim

SELECT distinct c.id_conta, c.nome_fornecedor, c.nome_produto, tp.nome_tipo_pagamento, c.valor_total, c.qtd_parcelas, c.valor_parcelas, (select IFNULL(his.valor_restante, c.valor_total) from historicorecebimentocontas his where c.id_conta = his.id_conta order by his.dt_pagto desc limit 1) as valor_restante FROM contaspagar c inner join tipospagamentos tp on tp.id_tipo_pagamento = c.id_tipo_pagamento left join historicorecebimentocontas h on h.id_conta = c.id_conta

L

Resolvido.
Obrigado.

Obs: Me desculpe pela falta de informação.

Criado 15 de agosto de 2011
Ultima resposta 18 de ago. de 2011
Respostas 4
Participantes 2