SQL SERVER 2008 R2 库表中要求一列数据等于另一列数据按时间错位相减

newlovedew 2014-03-11 03:21:08
例如下表

插入一行后自动变成下表

此表数据量会很大 千万条记录计
...全文
597 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
md5e 2014-03-11
  • 打赏
  • 举报
回复

Select [time],value1,value2 From(
	Select [time],value1,sum(value1) OVER(PARTITION by rnum) as value2  From (
		Select [time],value1,((row_number() OVER(Order by [time] DESC,value1))+1)/2 as rnum From (
			select [time],value1 From m5_test
			Union all
			select [time],-value1 From(
				select [time],value1,row_number() OVER(Order by [time] DESC) as rnum From m5_test
			) as tb1 Where rnum>1
		) tb2
	) tb3
) tb4 Where value1>=0 Order by [time]
md5e 2014-03-11
  • 打赏
  • 举报
回复
md5e 2014-03-11
  • 打赏
  • 举报
回复
与2~count-1行合并 1 2 2 4 4 6 6 10 按时间排序,(row_number-1)/2为关联进行var操作 1 2 2 4 4 6 6 10
newlovedew 2014-03-11
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你这个和总共多少条数据没关系吧,你只需要处理增加的那一行和它下面那一行就ok了
额 我理解你的意思了 只要处理2条
newlovedew 2014-03-11
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你这个和总共多少条数据没关系吧,你只需要处理增加的那一行和它下面那一行就ok了
会中间插入数据,那么它后面的数据量可能会很大,处理起来就不好了吧
bdmh 2014-03-11
  • 打赏
  • 举报
回复
你这个和总共多少条数据没关系吧,你只需要处理增加的那一行和它下面那一行就ok了

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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