ID       SU       FANWEI
   1       2          1
   1       2          2
   1       5          3
   1       5          4
   1       6          5
   1       4          6
   2       5          1 要求求ID为1的记录的,FANWEI在1-3和4-6的SU和,
输出结果为
   ID   SU(1-3) SU(4-6)
    1      9         15用一个查询语句实现。

解决方案 »

  1.   

    select id,
           sum(
               case   
                 when FANWEI <=3 then su
                 else 0
               end
             ) "su(1-3)",
           sum(
               case   
                 when FANWEI >3 then su
                 else 0
               end
             ) "su(4-6)"
    from 表
    where id=1
    group by id
      

  2.   

    select id,sum(su) from T1 where id=1 and fanwei between 1 and 3 and between 4 and 6 
      

  3.   


    明显错误,既然有了sum ,前面还有个ID,怎么会没有group by 
      

  4.   

    SELECT ID,
           SUM(DECODE(FANWEI, 1, SU, 2, SU, 3, SU, 0)) AS "SU(1-3)",
           SUM(DECODE(FANWEI, 4, SU, 5, SU, 6, SU, 0)) AS "SU(4-6)"
      FROM TEST
     WHERE ID = 1
     GROUP BY ID
      

  5.   


    正解。我给偷下懒
    select 1, 
          sum( 
              case  
                when FANWEI <4 then su 
                else 0 
              end 
            ) "su(1-3)", 
          sum( 
              case  
                when FANWEI >3 then su 
                else 0 
              end 
            ) "su(4-6)" 
    from 表 
    where id=1