在PL\SQL中执行的    
    SELECT a.lsh,
    DECODE(DJZT,9,'退单',0,'已提报',1,'销售审核通过',2,'日报编制完成',3,'日报审核通过',4,'任务指派完成',
    DECODE((select count(*) from a_ysd_qk c where c.lsh=a.lsh and c.djzt=5 and c.ce>0),0,'运输途中','开发货通知单'),
    DECODE((select count(*) from a_ysd_qk c where c.lsh=a.lsh and c.djzt=6 and c.ce>0),0,'任务完成','销售方案部分未执行')) djzt
    from a_ysd a 

解决方案 »

  1.   

    不知道你报什么错误
    但明显,DECODE((select   count(*)   from   a_ysd_qk   c   where   c.lsh=a.lsh   and   c.djzt=6   and   c.ce> 0),0, '任务完成 ', '销售方案部分未执行 '))   djzt ,在djzt前面多了个右括号。
      

  2.   

            SELECT   a.lsh, 
            DECODE(DJZT,9, '退单 ',0, '已提报 ',1, '销售审核通过 ',2, '日报编制完成 ',3, '日报审核通过 ',4, '任务指派完成 ', 
            DECODE((select   count(*)   from   a_ysd_qk   c   where   c.lsh=a.lsh   and   c.djzt=5   and   c.ce> 0),0, '运输途中 ', '开发货通知单 '))   djzt 
            from   a_ysd   a 
    这样就没有问题。
      

  3.   

    重新看了下您的语句,您是要写3个并列的DECODE语句还是第一个DECODE语句包含后面2个DECODE语句。
    SELECT   a.lsh, 
            DECODE(DJZT,9, '退单 ',0, '已提报 ',1, '销售审核通过 ',2, '日报编制完成 ',3, '日报审核通过 ',4, '任务指派完成 ' --这里是否要括号?,
            DECODE((select   count(*)   from   a_ysd_qk   c   where   c.lsh=a.lsh   and   c.djzt=5   and   c.ce> 0),0, '运输途中 ', '开发货通知单 '), 
            DECODE((select   count(*)   from   a_ysd_qk   c   where   c.lsh=a.lsh   and   c.djzt=6   and   c.ce> 0),0, '任务完成 ', '销售方案部分未执行 '))   djzt 
            from   a_ysd   a   
      

  4.   

    是第一个DECODE语句包含后面2个DECODE语句。 
    原来的语句如下:
    SELECT a.lsh,
        DECODE(DJZT,9,'退单',0,'已提报',1,'销售审核通过',2,'日报编制完成',3,'日报审核通过',4,'任务指派完成',5 ,'运输途中',6,'任务完成') djzt
        from a_ysd a 
    现在在最后两个状态上再次进行判断。
      

  5.   

    SELECT   a.lsh, 
            DECODE(DJZT,9, '退单 ',0, '已提报 ',1, '销售审核通过 ',2, '日报编制完成 ',3, '日报审核通过 ',4, '任务指派完成 ', 
            DECODE((select   count(*)   from   a_ysd_qk   c   where   c.lsh=a.lsh   and   c.djzt=5   and   c.ce> 0),0, '运输途中 ', '开发货通知单 '), 
            DECODE((select   count(*)   from   a_ysd_qk   c   where   c.lsh=a.lsh   and   c.djzt=6   and   c.ce> 0),0, '任务完成 ', '销售方案部分未执行 '))   djzt 
            from   a_ysd   a   来假设一下:
    如果红色代码段的子查询返回一个Count值0,则该DECODE返回‘运输途中’。
    如果绿色代码段的子查询也返回一个Count值0,则该DECODE返回‘任务完成’。则最后,整个代码变成:
    SELECT   a.lsh, 
            DECODE(DJZT,9, '退单 ',0, '已提报 ',1, '销售审核通过 ',2, '日报编制完成 ',3, '日报审核通过 ',4, '任务指派完成 ', '运输途中 ','任务完成 ')   djzt 
            from   a_ysd   a   这个DECODE语句难道没错吗?
      

  6.   

    上午已经发现错误了。应该是这样的:
    SELECT a.lsh,DECODE(DJZT,9,'退单',0,'已提报',1,'销售审核通过',2,'日报编制完成',3,'日报审核通过',4,'任务指派完成',5,
        DECODE((select count(*) from a_ysd_qk c where c.lsh=a.lsh and c.djzt=5 and c.ce>0),0,'运输途中','开发货通知单'),6,
        DECODE((select count(*) from a_ysd_qk c where c.lsh=a.lsh and c.djzt=6 and c.ce>0),0,'任务完成','销售方案部分未执行')) djzt
        from a_ysd a

    可是执行效率非常差。