sql - SQL Server - 反向累积和
问题描述
我有一个需要反转的累积总和。如何在 SQL Server 中执行此操作?
例子:
+---+-------------------+-----+
| id| date|value|
+---+-------------------+-----+
| J1|2016-10-01 11:45:30| 100|
| J1|2016-10-02 11:30:30| 200|
| J1|2016-10-05 16:20:00| 400|
| J9|2016-10-06 08:35:00| 800|
| J9|2016-10-07 01:20:00| 900|
+---+-------------------+-----+
所需的数据框:
+---+-------------------+-----+---------+
| id| date|value|non_cum_value|
+---+-------------------+-----+---------+
| J1|2016-10-01 11:45:30| 100| 0|
| J1|2016-10-02 11:30:30| 200| 100|
| J1|2016-10-05 16:20:00| 400| 200|
| J9|2016-10-06 08:35:00| 800| 400|
| J9|2016-10-07 01:20:00| 900| 100|
+---+-------------------+-----+---------+
我的代码:
select t1.id, t1.value, DIFFERENCE(t1.value) as 'cum_sum'
from @t t1
inner join @t t2 on t1.id >= t2.id
group by t1.id, t1.value
order by t1.id
解决方案
嗯。. . 您似乎想从“上一个”行中减去该值。那将是:
select t.*,
(t.value - lag(t.val) over (order by date)) as diff
from @t;
我不确定为什么标题中有“累计金额”。这无助于我理解你想要做什么。
推荐阅读
- c# - 如何在 ASP.NET Core 3 Razor Pages 中使用环境路由值?
- javascript - Javascript表单验证,单个按钮上的多个功能无法正常工作
- python - 数据操作 Python - 迭代行
- reactjs - React JSX - 用图像填充 svg
- java - 我在 Android Studio 3.6.1 中找不到 Batch Drawable Importer Plugin
- string - 无法将 HashSet<&str> 强制转换为 HashSet<&String>
- python - 我怎样才能让这个 python 代码执行得更快?
- c# - 将 SendKeys 与非活动窗口一起使用
- arrays - React,如何用不同的键渲染静态 json 数据
- nuxt.js - Nuxt 使用 AWS lambda 无服务器部署-内部服务器错误-CoulWatch:找不到模块“nuxt-purgecss”