PostgreSql -> Sempre retornar um registro
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?
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
Curtidas 0
Respostas
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?
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
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.
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
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?
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
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.
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