select sum(flag3) from tb where flag=1
select sum(flag3) from tb where flag=1 and flag2=1
select sum(flag3) from tb where flag=1 and flag2=2就是查询3个情况的数据

解决方案 »

  1.   

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

  2.   

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

  3.   

    select sum(iif(flag=1,flag3,0)) as num1
    from A
      

  4.   

    select sum(flag3) from tb where
    flag=1
    and
    flag2 in (1,2)
      

  5.   

    select sum(flag3) from tb where flag=1
    union
    select sum(flag3) from tb where flag=1 and flag2=1
    union
    select sum(flag3) from tb where flag=1 and flag2=2
    这样行吗?
      

  6.   

    这个就要用分支语句case when了不过效率有些低:
    select 
      sum(case when flag=1 then flag3 else 0 end) as sum1,
      sum(case when flag=1 and flag2=1 then flag3 else 0 end) as sum2,
      sum(case when flag=1 and flag2=2 then flag3 else 0 end) as sum3
    from tb