请教一个关于按日期分组查询的语句

spark_li 2013-07-03 09:15:18
表结构如下
id myvalue datatime
大概每10分钟多一条记录

现在要查询最近二十小时内 每个小时 最大的myvalue值,并且按照时间倒叙显示


...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
寡亾 2013-07-05
  • 打赏
  • 举报
回复
引用 1 楼 AcHerat 的回复:

select convert(varchar(13),datatime,120) as datatime,
       max(myvalue) as myvalue
from tbname
where datediff(hh,datatime,getdate()) <= 20
group by convert(varchar(13),datatime,120)
好久没来了,兔子还是这么勤快、
minqin 2013-07-05
  • 打赏
  • 举报
回复
select top(20) id,max(myvalue),datatime from TABLE group by datepart(hh,datatime) desc
叶子 2013-07-03
  • 打赏
  • 举报
回复

--试试这个行不行?
select  left(format(日期, 'yyyy-mm-dd hh'),13) as datatime,
       max(myvalue) as myvalue
from tbname
where datediff('h',datatime,date()) <= 20
group by left(format(日期, 'yyyy-mm-dd hh'),13) 
order by left(format(日期, 'yyyy-mm-dd hh'),13) desc

ChinaITOldMan 2013-07-03
  • 打赏
  • 举报
回复
access很多年没用了
spark_li 2013-07-03
  • 打赏
  • 举报
回复
不好意思啊,忘记说了,是access啊。。
lzw_0736 2013-07-03
  • 打赏
  • 举报
回复
declare @d datetime set @d=getdate() ; with a1 as ( select number,dateadd(hour,-number,@d) time_b,dateadd(hour,-number+1,@d) time_e from master..spt_values where [type]='p' and number between 1 and 20 ) select a.number,b.time_b,b.time_e,max(myvalue) myvalue from 表 a inner join a1 b on a.datatime>b.time_b and a.datatime<=b.time_e group by a.number,b.time_b,b.time_e order by a.number
AcHerat 2013-07-03
  • 打赏
  • 举报
回复

select convert(varchar(13),datatime,120) as datatime,
       max(myvalue) as myvalue
from tbname
where datediff(hh,datatime,getdate()) <= 20
group by convert(varchar(13),datatime,120)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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