有个A表 有字段date  sal
比如
select * from A 
然后我有些日期没有数据  比如说10.1号有数据 10.2没 10.3有
查出来就是
10.1 199
10.3 222
我想要的结果是
10.1 199
10.2 0
10.3 222
就是如果某天没记录也要给个默认值

解决方案 »

  1.   

    select adate, case when date is null then 0 end as adata from A
      

  2.   

    问题的关键部分是,这个天数
    你要有个范围吧,
    加入这一个月内的,
    可以通过SYSDATE进行一天一天的判断去找,没有返回0
      

  3.   

    使用
    select 开始日期+rownum-1 from dual connect rownum<=结束日期-开始日期+1
    构造连续日期,然后左连接你的A表
      

  4.   

    用case when 不就可以了?
      

  5.   

    我觉得简单的nvl就能搞定SELECT DATE1,NVL(sal,'defaultValue') FROM CSDN1;
      

  6.   


    SELECT TO_CHAR(T.DUAL_COL1, 'mm.dd'), NVL(TEST1.sal, 0)
      FROM TEST1,
           (SELECT TO_DATE('10.1', 'mm.dd') + ROWNUM - 1 AS DUAL_COL1
              FROM DUAL
            CONNECT BY ROWNUM < 30) T
     WHERE T.DUAL_COL1 = TO_DATE(COL1(+), 'mm.dd')
     ORDER BY T.DUAL_COL1