问个小白关于top的问题

人称猪 2011-10-28 10:27:46
表中有字段“日期 datatime”“机器 int”“数据 int”
现在在想选出同一时间段各机器的汇总数据
select top(7) bianhaoid shuju = sum(shuju)
from b
group by bianhaoid
order by bianhaoid asc

现在问题是我一天当中一台机器有不同的班次,所以呢top(7)只是选择了每台机器的前7条数据而不是我想要的是7天。



这个怎么写呢,谢谢各位。
也不知道我说的清楚不清楚
...全文
105 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-10-28
  • 打赏
  • 举报
回复
select
distinct b.*
from
tb a
caoss apply
(select top 7 * from tb where convert(varchar(10),日期,120)=convert(varchar(10),t.日期,120) order by 日期desc)b
快溜 2011-10-28
  • 打赏
  • 举报
回复
select * from 
(select no=row_number() over(partition by bianhaoid,
convert(varchar(10),日期,120) order by sum(shuju)),bianhaoid,shuju = sum(shuju)
from b
group by bianhaoid,convert(varchar(10),日期,120)) t
where no<8
gold_water 2011-10-28
  • 打赏
  • 举报
回复
使用DATEDIFF函数,可以实现最近7天条件过滤.
dawugui 2011-10-28
  • 打赏
  • 举报
回复

建议你提供详细的资料:
例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。
这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。

TimZhuFaith 2011-10-28
  • 打赏
  • 举报
回复
分组排序。。。
gold_water 2011-10-28
  • 打赏
  • 举报
回复
加上日期条件,去掉TOP7
hchjjun 2011-10-28
  • 打赏
  • 举报
回复
加上日期条件就好了嘛
--小F-- 2011-10-28
  • 打赏
  • 举报
回复
select
distinct b.*
from
tb a
cross apply
(select top 7 * from tb where convert(varchar(10),日期,120)=convert(varchar(10),t.日期,120) order by 日期desc)b
中国风 2011-10-28
  • 打赏
  • 举报
回复
SELECT bianhaoid,CONVERT(varchar(10),日期,120), shuju = sum(shuju)
FROM
(SELECT *,row=ROW_NUMBER()OVER(PARTITION BY bianhaoid,CONVERT(varchar(10),日期,120) ORDER BY 日期 asc) FROM b )t--這里order by 為取的順序
WHERE row<=7
GROUP BY bianhaoid,CONVERT(varchar(10),日期,120)
人称猪 2011-10-28
  • 打赏
  • 举报
回复
请问我这个情况应该怎么使用这个函数呢
[Quote=引用 4 楼 gold_water 的回复:]

使用DATEDIFF函数,可以实现最近7天条件过滤.
[/Quote]

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧