oracle9i数据库,通过pl/sql操作,现有一表WW,有K,a,b,c,d五个字段,3000到4000左右条记录,欲求甲,乙2个结果,要对所有记录执行如下操作: 
如果K=1, 
    一:若(a-b)-c>=0,甲=b,乙=c; 
    二:若(a-b)-c <0,甲=b,乙=a-b; 
如果K=0, 
    一:若(a-b)-d>=0,甲=b+d,乙=0; 
    二:若(a-b)-d <0,甲=a,乙=0; 最后,对甲和乙的结果分别累加,输出甲和乙的结果,如果现在还想求sum(a)的值呢??sum(a)只要直接求就可以了不要加这些判断条件, 
也就是说,输出的结果是sum(甲),sum(乙),sum(a),恳求具体的SQL语句,不胜感激!!

解决方案 »

  1.   

    昨天给你回过了sum(甲),sum(乙)的,再加个sum(a) 直接加就是了
    select sum(甲) , sum(乙) 乙,su
      from (select case
                     when k = 1 then
                      b
                     when (k = 0 and a - b - d > 0) then
                      b + d
                     when (k = 0 and a - b - d < 0) then
                      a
                   end 甲 ,
                   case
                     when k = 0 then
                      0
                     when (k = 1 and a - b - c > 0) then
                      c
                     when (k = 1 and a - b - c < 0) then
                      a - b
                   end 乙,sum(a) su
              from ww)
      

  2.   

    是啊,直接加个sum(a)就行了啊
      

  3.   

    select sum(甲) , sum(乙) 乙,su
      from (select case
                     when k = 1 then
                      b
                     when (k = 0 and a - b - d > 0) then
                      b + d
                     when (k = 0 and a - b - d < 0) then
                      a
                   end 甲 ,
                   case
                     when k = 0 then
                      0
                     when (k = 1 and a - b - c > 0) then
                      c
                     when (k = 1 and a - b - c < 0) then
                      a - b
                   end 乙,sum(a) su
              from ww)这么做反复提示"not a single-group group function",如果不求sum(a),只求sum(甲),sum(乙),语句没问题,
    不知道问题到底出在哪??
      

  4.   


    sum(a) 用到外层 
    里层就吧 a SELECT 出来就是了select sum(甲) , sum(乙) 乙,sum(a)
      from (select case
                     when k = 1 then
                      b
                     when (k = 0 and a - b - d > 0) then
                      b + d
                     when (k = 0 and a - b - d < 0) then
                      a
                   end 甲 ,
                   case
                     when k = 0 then
                      0
                     when (k = 1 and a - b - c > 0) then
                      c
                     when (k = 1 and a - b - c < 0) then
                      a - b
                   end 乙,a          
            from ww)
      

  5.   

    问题逐步升级了,又添了张表YY,字段m,n,原WW表再添个字段m,YY.m和WW.m是关联的,
    保留原来的查询结果不变,还要增加YY.m=WW.m时表YY中n字段的查询结果,也就是说,最终的查询
    结果输出的应该是:YY.n,sum(甲),sum(乙),sum(a),求具体的SQL语句,
    问题越来越复杂了,实在不好意思