PostgreSql -> Sempre retornar um registro

21/02/2020

0

Tabela
CLIENTE NOME VALOR
------------------------
1 A 10
1 A 20
2 B 30

O que eu preciso:

Select distinct cliente from tabela where cliente = 2 and valor > 5
Retorna:

CLIENTE
--------
2

Quando existe algum registro que satisfaça a condição, tá ok.
Porém quando não existe, acontece como descrito abaixo:

Select distinct cliente from tabela where cliente = 2 and valor > 50
Retorna:

CLIENTE
---------
(nenhum registro aqui)

o que eu queria como retorno nesse caso seria:

CLIENTE
--------
0

Como faria para conseguir esse resultado?
Alberto

Alberto

Responder

Posts

21/02/2020

Kleber Santos

Tabela
CLIENTE NOME VALOR
------------------------
1 A 10
1 A 20
2 B 30

O que eu preciso:

Select distinct cliente from tabela where cliente = 2 and valor > 5
Retorna:

CLIENTE
--------
2

Quando existe algum registro que satisfaça a condição, tá ok.
Porém quando não existe, acontece como descrito abaixo:

Select distinct cliente from tabela where cliente = 2 and valor > 50
Retorna:

CLIENTE
---------
(nenhum registro aqui)

o que eu queria como retorno nesse caso seria:

CLIENTE
--------
0

Como faria para conseguir esse resultado?


Select distinct
CASE
WHEN cliente > 2 THEN cliente
ELSE "0"
END AS Clientes
from
tabela
where 1=1

segue a documentação:
https://www.w3schools.com/sql/sql_case.asp
Responder

24/02/2020

Alberto

Ola Kleber, obrigado por responder, mas meu resultado é mais complexo do que isso
porque ele só passa a existir depois do where, ou seja se o where for FALSE para
todos os registros a query retorna ZERO registros, independente do tratamento do CASE.
Responder

26/02/2020

Anderson Gonçalves

Tabela
CLIENTE NOME VALOR
------------------------
1 A 10
1 A 20
2 B 30

O que eu preciso:

Select distinct cliente from tabela where cliente = 2 and valor > 5
Retorna:

CLIENTE
--------
2

Quando existe algum registro que satisfaça a condição, tá ok.
Porém quando não existe, acontece como descrito abaixo:

Select distinct cliente from tabela where cliente = 2 and valor > 50
Retorna:

CLIENTE
---------
(nenhum registro aqui)

o que eu queria como retorno nesse caso seria:

CLIENTE
--------
0

Como faria para conseguir esse resultado?




Para trazer valores com Zero ao invés de Nulo faça:

Select Coalesce(Campo,0)as ApelidoCampo from Tabela

Espero ter ajudado.

Skype: anderson@case13.com.br
Responder

26/02/2020

Alberto

Anderson, obrigado por responder.

Esse código que você postou funciona bem para retornar
o valor de um campo com zero ao invés de nulo,
porém quando existe uma clausula where cujo resultado
é falso para todos os registros da tabela a query retorna
<nenhum registro>

É ai que está o meu problema:
quando isso acontecer eu gostaria que ao invés de: <nenhum registro>
a query sempre retornasse ZERO no campo do meu select.
Responder

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

Aceitar