PostgreSql -> Sempre retornar um registro

PostgreSQL

21/02/2020

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

Curtidas 0

Respostas

Kleber Santos

Kleber Santos

21/02/2020

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
GOSTEI 0
Alberto

Alberto

21/02/2020

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.
GOSTEI 0
Anderson Gonçalves

Anderson Gonçalves

21/02/2020

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
GOSTEI 0
Alberto

Alberto

21/02/2020

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.
GOSTEI 0
POSTAR