Tenta isso
SELECT setor,SUM(total) AS total
FROM
(
SELECT 'PV' AS setor,
SUM(pagvalorprincipal) AS total
FROM pagamentos
WHERE pagdtpagamento IS NULL AND pagdtvencimento < CAST(NOW() AS DATE)
GROUP BY setor
UNION
SELECT distinct 'PH' AS setor,
CASE WHEN pagdtvencimento = CAST(NOW() AS DATE) then
SUM(pagvalorprincipal) ELSE '0.00' END AS total
FROM pagamentos
GROUP BY setor ,pagdtvencimento
UNION
SELECT 'PF' AS setor,
SUM(pagvalorprincipal) AS total
FROM pagamentos
WHERE pagdtpagamento IS NULL AND pagdtvencimento > CAST(NOW() AS DATE)
GROUP BY setor
) AS setores
GROUP BY setor
Att
Matheus Ferreira
De: pgbr-geral [mailto:[email protected]] Em nome
de Paulo
Enviada em: segunda-feira, 20 de junho de 2016 11:23
Para: 'Comunidade PostgreSQL Brasileira'
<[email protected]>
Assunto: [pgbr-geral] REF: Instrução SELECT com retorno zerado.
Olá Pessoal,
Estou executando a sentença abaixo:
SELECT setor,SUM(total) AS total
FROM
(
SELECT 'PV' AS setor,
SUM(pagvalorprincipal) AS total
FROM pagamentos
WHERE pagdtpagamento IS NULL AND pagdtvencimento < data_atual
GROUP BY setor
UNION
SELECT 'PH' AS setor,
SUM(pagvalorprincipal) AS total
FROM pagamentos
WHERE pagdtpagamento IS NULL AND pagdtvencimento = data_atual
GROUP BY setor
UNION
SELECT 'PF' AS setor,
SUM(pagvalorprincipal) AS total
FROM pagamentos
WHERE pagdtpagamento IS NULL AND pagdtvencimento > data_atual
GROUP BY setor
) AS setores
GROUP BY setor
que me retorna tudo OK.
"PV";2505.61
"PH";106.65
"PF";4054.20
Quando não há dados em PH retorna:
"PV";2505.61
"PF";4054.20
O que preciso, é que quando não houver dados, por exemplo em PH, retornar
assim:
"PV";2505.61
"PH";0.00
"PF";4054.20
Estou tentando com COALESCE, mas ainda não consegui.
Alguém tem alguma dica ?
Att,
Paulo.
---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral