select name, num=sum(num) from a where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() group by name
select name, num=sum(num) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() group by name
select name,sum(num) from tablename group by name where addtime between dateadd(day,addtime,-5) and addtime
感谢楼上的解答,是我没把问题分析清楚. 查询结果应该是5天内按name列的重复次数排序.比如上面的表5天内a重复了3次,b重复了2次.那结果按倒序的话应该是: a b
select name, num=sum(num) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=getdate() group by name order by count(num) desc
select count(name) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=addtime group by name
select count(name) from tablename where addtime>=dateadd(day,-5,addtime) and addtime<=addtime group by name order by name desc
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
查询结果应该是5天内按name列的重复次数排序.比如上面的表5天内a重复了3次,b重复了2次.那结果按倒序的话应该是: a
b
group by name order by count(num) desc
,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
vivianfdlpw朋友的方案复杂了点儿,小弟没弄明白,所以没给分,十分抱歉,一并表示感谢.