说明一下,表大约有几万行,name列不是光a和b,要有几千个不同的name值

解决方案 »

  1.   

    select name, num=sum(num) from a where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() group by name
      

  2.   

    select name, num=sum(num) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() group by name
      

  3.   

    select name,sum(num) from tablename group by name where addtime between dateadd(day,addtime,-5) and addtime
      

  4.   

    感谢楼上的解答,是我没把问题分析清楚.
    查询结果应该是5天内按name列的重复次数排序.比如上面的表5天内a重复了3次,b重复了2次.那结果按倒序的话应该是: a
     b
      

  5.   

    select name, num=sum(num) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() 
    group by name order by count(num) desc
      

  6.   

    select count(name) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=addtime group by name
      

  7.   

    select count(name) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=addtime group by name order by name desc
      

  8.   

    select name
           ,sum(case when datediff(day,addtime,getdate())<=5 
                     then num 
                     else 0 
                end
               ) as 'num'
    from 表 t
    group by name
    order by (select count(1) 
                 from 表 
                     where name=t.name 
                           and datediff(day,addtime,getdate())<=5) descorselect name
           ,num
    from (
            select name
                   ,sum(case when datediff(day,addtime,getdate())<=5 
                             then num 
                             else 0 
                        end
                       ) as 'num'
                   ,count(1) as 'count'
            from 表
            group by name
         )t
    order by [count] desc
      

  9.   

    感谢所有给予热情帮助的朋友.
    vivianfdlpw朋友的方案复杂了点儿,小弟没弄明白,所以没给分,十分抱歉,一并表示感谢.