ALTER proc [dbo].[Ranklist](
@Mid int =385, --条件语句(不用加where)
@TotalCount int =3 --绑定前条记录
)
AS
BEGIN
declare @Count int;
set @Count=0;
select @Count=count(*) from (select top @TotalCount * from Product where CreateTime between dateadd(dd,-7,getdate()) and getdate() and [Audit]>0 and Mid=@Mid order by Click desc) a
if(@Count<@TotalCount)
begin
--绑定数量增加1天
--递归调用该存储过程
end
else
--返回结果集
END
因为数据不是每天都更新,我这样做的目的就是防止7天内没有更新数据的话,不至于前台没有数据显示,
我的思路是这样的,但是不会写这个过程,求各位大神帮帮完成这个过程!
------解决思路----------------------
你要group by一下再取top就不会只拿到全部数据的top值了
------解决思路----------------------
写错了不好意思
with cte as
(select case when DATEADD(dd,-7,getdate())<createtime
then GETDATE() else createtime end as createtime,
MID,CLIck from Product)
select top 7 * from cte
order by createtime desc ,click desc
------解决思路----------------------
我想查询的结果是,如果一周内没有查询出数据的话就在往前一天查询,以此类推。知道查询出10条最近点击量大的数据来
其实黄版的想法和我早上的想法相接近,按日期做分组排序partition by,已点击量倒叙,就得出每日点击量最多,外部直接按日期排序取前10,这样永不落空。但这里有唯一一种情况是不符合楼主思路,就是假设时间段内只有9条记录,9条中有一条点击只有1次,而往前推1天,总共能有11条记录,也就是多出的那天有2条记录,但两条点击数都比1大,这时楼主的思路会是8+2,而我说的分组排序会是9+1,区别在这里