select sum(num) from table where flag=1
select sum(num) from table where flag=2
select sum(num) from table where flag=3
我是最新手,我觉得因该有简单的办法, 请问能不能一条就直接返回 sum1,sum2,sum3 呢 就是把它们合并了。如果再加上一个条件又怎么样呢?select sum(num) from table where flag=1 and 操作员=01
select sum(num) from table where flag=2 and 操作员=01
select sum(num) from table where flag=3 and 操作员=01select sum(num) from table where flag=1 and 操作员=02
select sum(num) from table where flag=2 and 操作员=02
select sum(num) from table where flag=3 and 操作员=02请高手告诉一下 

解决方案 »

  1.   

    select sum1=sum(case flag when 1 then 1 else 0 end)
        ,sum2=sum(case flag when 2 then 1 else 0 end)
        ,sum3=sum(case flag when 3 then 1 else 0 end)
    from tb
      

  2.   

    select 操作员, sum1=sum(case flag when 1 then 1 else 0 end)
        ,sum2=sum(case flag when 2 then 1 else 0 end)
        ,sum3=sum(case flag when 3 then 1 else 0 end)
    from tb
    group by 操作员
      

  3.   

    --2楼查所有操作员,如果只查某一个操作员:
    select sum1=sum(case flag when 1 then 1 else 0 end)
        ,sum2=sum(case flag when 2 then 1 else 0 end)
        ,sum3=sum(case flag when 3 then 1 else 0 end)
    from tb
    where 操作员='01'
      

  4.   


    select 操作员,flag,sum(num) from table group by 操作员,flag
      

  5.   

    --1
    select sum(num) from table group by flag 
    where flag =1 or flag=2 or flag=3
    --2
    select sum(num) from table group by flag 
    where (操作员=01 and (flag =1 or flag=2 or flag=3)) 
    or (操作员=02 and (flag =1 or flag=2 or flag=3))
      

  6.   

    select sum(num) from table where flag=1
    select sum(num) from table where flag=2
    select sum(num) from table where flag=3
    ---------------------------------------------------
    select flag , sum(num) from table where flag in (1,2,3) group by flag
      

  7.   


    select t.操作员,sum(t.num1) as sum1,sum(t.num2) as sum2,sum(t.num3) as sum3 from 
    (select 操作员,
      case flag when 1 then num else 0 end as num1,
      case flag when 2 then num else 0 end as num2,
      case flag when 3 then num else 0 end as num3,
     from table) t group by t.操作员
      

  8.   

    再帮我一次吧,要是再加上日期应该在哪个条件里面加呢??select sum(num) from table where flag=1 and 操作员=01 and 日期 >='20070101' and  日期 >='20071231'
    select sum(num) from table where flag=2 and 操作员=01 and 日期 >='20070101' and  日期 >='20071231'
    select sum(num) from table where flag=3 and 操作员=01 and 日期 >='20070101' and  日期 >='20071231'select sum(num) from table where flag=1 and 操作员=02 and 日期 >='20070101' and  日期 >='20071231'
    select sum(num) from table where flag=2 and 操作员=02 and 日期 >='20070101' and  日期 >='20071231'
    select sum(num) from table where flag=3 and 操作员=02 and 日期 >='20070101' and  日期 >='20071231'
      

  9.   

    我写错了上面应该是
    日期 >='20070101' and  日期 <='20071231'
      

  10.   

    --2楼查所有操作员,如果只查某一个操作员:
    select sum1=sum(case flag when 1 then 1 else 0 end)
        ,sum2=sum(case flag when 2 then 1 else 0 end)
        ,sum3=sum(case flag when 3 then 1 else 0 end)
    from tb
    where 操作员='01' and 日期 between '20070101' and  '20071231'
      

  11.   

    --查所有操作员
    select 操作员, sum1=sum(case flag when 1 then 1 else 0 end)
        ,sum2=sum(case flag when 2 then 1 else 0 end)
        ,sum3=sum(case flag when 3 then 1 else 0 end)
    from tb
    where 日期 between '20070101' and  '20071231'
    group by 操作员
      

  12.   

    then 1 ---------> then num
    --如果只查某一个操作员:
    select sum1=sum(case flag when 1 then num else 0 end)
        ,sum2=sum(case flag when 2 then num else 0 end)
        ,sum3=sum(case flag when 3 then num else 0 end)
    from tb
    where 操作员='01' and 日期 between '20070101' and  '20071231' 
       
    --查所有操作员
    select 操作员, sum1=sum(case flag when num then 1 else 0 end)
        ,sum2=sum(case flag when 2 then num else 0 end)
        ,sum3=sum(case flag when 3 then num else 0 end)
    from tb
    where 日期 between '20070101' and  '20071231'
    group by 操作员
     
     
      

  13.   

    select sum1=sum(case flag when 1 then 1 else 0 end)
          ,sum2=sum(case flag when 2 then 1 else 0 end)
          ,sum3=sum(case flag when 3 then 1 else 0 end)
    from tb
    where 操作员='01' and 日期 between '20070101' and  '20071231'
      

  14.   


    select t.操作员,sum(t.num1) as sum1,sum(t.num2) as sum2,sum(t.num3) as sum3 from 
    (select 操作员,
      case flag when 1 then num else 0 end as num1,
      case flag when 2 then num else 0 end as num2,
      case flag when 3 then num else 0 end as num3,
     from table where 日期 between '20070101' and  '20071231') t group by t.操作员
      

  15.   

    这样~~~select sum1=sum(case flag when 1 then 1 else 0 end),
    sum2=sum(case flag when 2 then 1 else 0 end),
    sum3=sum(case flag when 3 then 1 else 0 end)
    from table