例子如下
数据库中“第二季度”由于没有数据,因此进行统计查询时是不显示的,有什么办法能够让查询结果实现以下的转换?
就是在没有数据的情况下,也能显示所有的季度记录 季度         数量
第一季度       12
第三季度       16 
第四季度       7
-------------
 季度         数量
第一季度       12
第二季度       0
第三季度       16 
第四季度       7

解决方案 »

  1.   

    注:已经想过用union(all)的方法硬拼,但是觉得效率低,想讨教下有无更好的方法?
      

  2.   

    用 union all 加入4条记录,效率不低吧?也可以建张季度的表,用 left join
      

  3.   

    to Teamwolves(草原狼):
    我现在的查询是
    select season,count(*) from table
    group by season
    因此用nvl是无法解决得
    to maaw(maaw): 
    问题是现在只是季度,后面还有月份,以及其它更加复杂的分类,总不能全部用union来拼凑吧
      

  4.   

    to bjt_(bjt):
    我现在是单表查询,当然我可以构造一个基础表用来存放这些信息,然后用外联,可是我没有权限。或者oracle自己提供了这样的系统表供我调用?
      

  5.   

    可以在结果上加UNION ALL:
    select season, sum(num)
    from
    (
    select season,count(*) as num from table
    group by season
    union all
    select '第一季度' as season,0 as num from dual
    union all
    select '第二季度' as season,0 as num from dual
    union all
    select '第三季度' as season,0 as num from dual
    union all
    select '第四季度' as season,0 as num from dual
    )
    group by season