select mailtype,sum(decode(status,'发货',decode(greatest(tjrq,'2005-10-27'),'2005-10-27','0',ddje),'0')) as tjje from dailyorderct 
group by mailtype

解决方案 »

  1.   

    as tjje  ,,我想知道你这个是什么意思,。,,还有,,我想这个就是问题的关键!!!
      

  2.   

    as tjje  别名   用来指代sum(decode(status,'发货',decode(greatest(tjrq,'2005-10-27'),'2005-10-27','0',ddje),'0'))这个的!! 
    select mailtype,sum(decode(status,'发货',decode(greatest(tjrq,'2005-10-27'),'2005-10-27','0',ddje),'0')) as tjje from dailyorderct 
    group by mailtype
    这个是按日期段显示每日的tjje 不仅仅是小于 2005-10-17的了!
      

  3.   

    楼上的说的对,二楼的方法统计的是所有小于2005-10-27的数据和了.
    我想要的是通过判断tjrq来统计不同时期的产品金额,如果统计日期在2005-10-27的,就让数据显示0
      

  4.   

    日期是用户选择的参数,数据库中最早的日期是2005-10-27
    select mailtype,sum(decode(status,'发货',ddje,'0')) as tjje from dailyorderct 
    where tjrq <'2005-10-31' 
    group by mailtype
    结果:     mailtype                    tjje
            EMS代收货款                   1000
             大田配送                      200
    如果选择的日期参数是2005-10-26,那就显示
                  mailtype                           tjje
                EMS代收货款                            0
                  大田配送                             0            
      

  5.   

    那换一下就行了
    select mailtype,sum(decode(status,'发货',decode(least(tjrq,'2005-10-27'),'2005-10-27','0',ddje),'0')) as tjje from dailyorderct 
    group by mailtype