Trazer valores NULL.

PostgreSQL

Modelagem

20/01/2015

Olá como faço para que os dias após a data de hoje apareçam como NULL para o ano somente de 2015, por exemplo hoje é dia 19, dessa forma do dia 20 ao 31, no ano de 2015, os valores devem ser NULL ao invés de 0. Abaixo está o código e o resultado.
SELECT date_part('year', data) as ano, 
		SUM(CASE WHEN date_part('day',data) = '1' THEN 1 ELSE 0 END) AS "01",
		SUM(CASE WHEN date_part('day',data) = '2' THEN 1 ELSE 0 END) AS "02",
		SUM(CASE WHEN date_part('day',data) = '3' THEN 1 ELSE 0 END) AS "03",
		SUM(CASE WHEN date_part('day',data) = '4' THEN 1 ELSE 0 END) AS "04",
		SUM(CASE WHEN date_part('day',data) = '5' THEN 1 ELSE 0 END) AS "05",
		SUM(CASE WHEN date_part('day',data) = '6' THEN 1 ELSE 0 END) AS "06",
		SUM(CASE WHEN date_part('day',data) = '7' THEN 1 ELSE 0 END) AS "07",
		SUM(CASE WHEN date_part('day',data) = '8' THEN 1 ELSE 0 END) AS "08",
		SUM(CASE WHEN date_part('day',data) = '9' THEN 1 ELSE 0 END) AS "09",
		SUM(CASE WHEN date_part('day',data) = '10' THEN 1 ELSE 0 END) AS "10",
		SUM(CASE WHEN date_part('day',data) = '11' THEN 1 ELSE 0 END) AS "11",
		SUM(CASE WHEN date_part('day',data) = '12' THEN 1 ELSE 0 END) AS "12",
		SUM(CASE WHEN date_part('day',data) = '13' THEN 1 ELSE 0 END) AS "13",
		SUM(CASE WHEN date_part('day',data) = '14' THEN 1 ELSE 0 END) AS "14",
		SUM(CASE WHEN date_part('day',data) = '15' THEN 1 ELSE 0 END) AS "15",
		SUM(CASE WHEN date_part('day',data) = '16' THEN 1 ELSE 0 END) AS "16",
		SUM(CASE WHEN date_part('day',data) = '17' THEN 1 ELSE 0 END) AS "17",
		SUM(CASE WHEN date_part('day',data) = '18' THEN 1 ELSE 0 END) AS "18",
		SUM(CASE WHEN date_part('day',data) = '19' THEN 1 ELSE 0 END) AS "19",
		SUM(CASE WHEN date_part('day',data) = '20' THEN 1 ELSE 0 END) AS "20",
		SUM(CASE WHEN date_part('day',data) = '21' THEN 1 ELSE 0 END) AS "21",
		SUM(CASE WHEN date_part('day',data) = '22' THEN 1 ELSE 0 END) AS "22",
		SUM(CASE WHEN date_part('day',data) = '23' THEN 1 ELSE 0 END) AS "23",
		SUM(CASE WHEN date_part('day',data) = '24' THEN 1 ELSE 0 END) AS "24",
		SUM(CASE WHEN date_part('day',data) = '25' THEN 1 ELSE 0 END) AS "25",
		SUM(CASE WHEN date_part('day',data) = '26' THEN 1 ELSE 0 END) AS "26",
		SUM(CASE WHEN date_part('day',data) = '27' THEN 1 ELSE 0 END) AS "27",
		SUM(CASE WHEN date_part('day',data) = '28' THEN 1 ELSE 0 END) AS "28",
		SUM(CASE WHEN date_part('day',data) = '29' THEN 1 ELSE 0 END) AS "29",
		SUM(CASE WHEN date_part('day',data) = '30' THEN 1 ELSE 0 END) AS "30",
		SUM(CASE WHEN date_part('day',data) = '31' THEN 1 ELSE 0 END) AS "31",
		COUNT(*) as Total
from admgis.controle_mortes
WHERE subjetividade = 'CVLI'
AND date_part('MONTH',data) = 01
AND UPPER(cidade) = 'ARAPIRACA'

GROUP BY ano
ORDER BY ano


[img]http://oi59.tinypic.com/1sfuao.jpg[/img]
Jamerson

Jamerson

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

20/01/2015

Vou dar um exemplo e você replica para as próximas linhas:

CASE (SUM(CASE WHEN date_part('day',data) = '1' THEN 1 ELSE 0 END)) = 0 THEN NULL ELSE (SUM(CASE WHEN date_part('day',data) = '1' THEN 1 ELSE 0 END)) AS "01"
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

20/01/2015

Vou dar um exemplo e você replica para as próximas linhas:

CASE (SUM(CASE WHEN date_part('day',data) = '1' THEN 1 ELSE 0 END)) = 0 THEN NULL ELSE (SUM(CASE WHEN date_part('day',data) = '1' THEN 1 ELSE 0 END)) AS "01"
GOSTEI 0
POSTAR