我有一个月空气质量的数据表,在这个表里我有优、良、轻度污染、重度污染等等等级,我现在向查询这一个月内每一种等级的天数,那我就要用到group by,但是如果这一个月没有某一种等级,我想在返回结果的地方补0,请问要怎么写。求大神。。。。
这是我的表结构,我需要查询的是某个月,某个城市id的各种等级的天数。
nvl(天数,0);天数为空,则返回0.
http://blog.csdn.net/jie11447416/article/details/50887888
-- SQL Server
WITH
/* 测试数据
空气质量表(日期,等级) AS (
SELECT '01-01','良' UNION ALL
SELECT '01-02','良' UNION ALL
SELECT '01-02','轻度污染'
), */
X(等级) AS (
SELECT '优' UNION ALL
SELECT '良' UNION ALL
SELECT '轻度污染' UNION ALL
SELECT '重度污染'
)
SELECT x.等级,
COUNT(t.日期) AS 天数
FROM x
LEFT JOIN 空气质量表 t
ON x.等级 = t.等级
GROUP BY x.等级
等级 天数
-------- -----------
优 0
良 2
轻度污染 1
重度污染 0