例如
select count(1) from client where member=5 and rank=1
这个是一个统计
根据不同的rank会做多个统计但这样效率很低(要多次统计)
能不能一次过返回rank为1 2 3 4 5这样的数据呢

解决方案 »

  1.   

    在SQL2005中利用RANK()函数与ROW_NUMBER()对现有数据进行排序改造在SQL2005中利用DENSE_RANK()排名函数对现有数据进行排序改造
      

  2.   

    select 
        sum(case rank when 1 then 1 else 0 end) as [rank1],
        sum(case rank when 2 then 1 else 0 end) as [rank2],
        sum(case rank when 3 then 1 else 0 end) as [rank3],
        sum(case rank when 4 then 1 else 0 end) as [rank4],
        sum(case rank when 5 then 1 else 0 end) as [rank5]
    from 
        client 
    where 
        member=5
      

  3.   

    select 
      rank,
      count(1) as cnt
    from
      client
    where
      member=5
    group by
      rank
      

  4.   

    select rank,count(1) as a from client wheremember=5 group by rank
      

  5.   

    select rank,num=count(1) from client where member=5 group by rank