求一个创建视图或者存储过程的脚本。

zsl6658 2009-03-10 11:53:20
记录时间 次数
2009-3-4 00:01:10 3
2009-3-4 01:01:10 4
2009-3-4 02:01:10 5
2009-3-4 03:01:10 6
.................................
2009-3-4 23:01:10 26
2009-3-5 00:01:10 21
2009-3-5 01:01:10 22
..................................
2009-3-5 23:01:10 224
...................................
2009-3-6 00:01:10 225
2009-3-6 01:01:10 226
....................................
2009-3-6 23:01:10 227
...................................

怎么把这样的表转为
小时 4日次数 5日次数 6日次数 ..........
0 3 21 225
1 4 22 226
..............................................
23 26 224 227


转前表的数据是记录每天每小时在线人数。

转之后需要统计当前日期前7天每小时在线人数。

请问大侠们这个问题怎么搞定?

最好sqlserver和oracle都有解。
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-03-11
  • 打赏
  • 举报
回复
--oracle

select substr(to_char(记录时间,'yyyy-mm-dd hh24:mi:ss'),11,2) 小时,
sum(case to_char(记录时间,'yyyy-mm-dd') when '2009-03-04' then 次数 else 0 end) [2009-03-04],
sum(case to_char(记录时间,'yyyy-mm-dd') when '2009-03-05' then 次数 else 0 end) [2009-03-05],
sum(case to_char(记录时间,'yyyy-mm-dd') when '2009-03-06' then 次数 else 0 end) [2009-03-06]
from tb
group by substr(to_char(记录时间,'yyyy-mm-dd hh24:mi:ss'),11,2)
htl258_Tony 2009-03-10
  • 打赏
  • 举报
回复
没看出算法,帮顶。
dawugui 2009-03-10
  • 打赏
  • 举报
回复
--sql

select datepart(hh,记录时间) 小时,
sum(case convert(varchar(10),记录时间,120) when '2009-03-04' then 次数 else 0 end) [2009-03-04],
sum(case convert(varchar(10),记录时间,120) when '2009-03-05' then 次数 else 0 end) [2009-03-05],
sum(case convert(varchar(10),记录时间,120) when '2009-03-06' then 次数 else 0 end) [2009-03-06]
from tb
group by datepart(hh,记录时间)

34,593

社区成员

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

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