SQL Server - 遇到 0 时重置的累积总和

2023-11-25

我想对列进行累积和,但每当遇到 0 时都会重置聚合值

这是我尝试做的一个例子:

该数据集:

pk    price
1     10
2     15
3     0
4     10
5     5

给出这个:

pk    price
1     10
2     25
3     0
4     10 
5     15

在 SQL Server 2008 中,您受到严重限制,因为您无法使用分析函数。以下方法效率不高,但可以解决您的问题:

with tg as (
      select t.*, g.grp
      from t cross apply
           (select count(*) as grp
            from t t2
            where t2.pk <= t.pk and t2.pk = 0
           ) g
     )
select tg.*, p.running_price
from tg cross apply
     (select sum(tg2.price) as running_price
      from tg tg2
      where tg2.grp = tg.grp and tg2.pk <= tg.pk
     ) p;

唉,在 SQL Server 2012 之前,最有效的解决方案可能涉及游标。在 SQL Server 2012+ 中,您只需执行以下操作:

select t.*,
       sum(price) over (partition by grp order by pk) as running_price
from (select t.*,
             sum(case when price = 0 then 1 else 0 end) over (order by pk) as grp
      from t
     ) t;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server - 遇到 0 时重置的累积总和 的相关文章

  • 错误 1364 (HY000):字段“MY_DATE”没有默认值

    create table MYTABLE MY DATE int NOT NULL AUTO INCREMENT NAME varchar 255 NOT NULL UNIQUE INSERT INTO MYTABLE NAME value
  • JDBC 插入错误

    我正在尝试使用 jdbc 将一些数据插入到我的数据库中 我使用了正确的表 数据库名称和参数 一切都经过检查 Code public static void main String args throws IOException ClassN
  • 如何从代码获取复制状态

    我已经在 SQL Server 2005 数据库上完成了复制 现在我想从我的 GUI 显示状态 可以是 C 或其他 是否有任何方法或 API 可以让我监控复制状态 这是为了客户端确认复制正在工作 Thanks 像这样的事情 http www
  • 什么时候应该在 SQL Server 中使用分号?

    在检查 Web 上的一些代码和 SQL Server Management Studio 生成的脚本时 我注意到某些语句以分号结尾 那么我应该什么时候使用它呢 来自 SQLServerCentral Comarticle http www
  • Hive 中的 CASE 语句

    好的 我有以下代码来用二进制标志标记表中具有最高 Month cd 的记录 Select t1 month cd t2 max month cd CASE WHEN t2 max month cd null then 0 else 1 en
  • 在 SQLite GROUP BY 查询的 SELECT 列表中包含额外的列是否安全?

    我有一个简单的 SQLite 表 名为 message sequence INTEGER PRIMARY KEY type TEXT content TEXT 我想获取每种类型的最后一条消息的内容 由其序列确定 令我惊讶的是 以下简单查询有
  • 有没有办法将加密的脚本插入 SQL Server 数据库?

    我的公司认为我们编写的数据库脚本是我们知识产权的一部分 在新版本中 我们为用户提供了由两部分组成的设置 桌面应用程序 一个可执行文件 它包含了初始化 更新数据库的复杂性 RedGate SQL Packager 我知道一旦脚本存在我就可以加
  • 将 Linq 表达式转换为 SQL Server 查询

    我正在使用一些 crm 框架 该框架没有任何内部 orm 并且不使用实体框架 仅使用纯 sql 查询 我在数据库中的每个表都有实体 所以我有例如 public class Customer public string FirstName g
  • GRANT EXECUTE 所需的权限

    我正在为需要能够创建和删除过程但也向其他用户授予执行权限的用户创建一个组 GRANT CREATE PROCEDURE TO xxx xxx GRANT ALTER ON SCHEMA dbo TO xxx xxx 但是 我需要向组授予什么
  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • 插入 SQL Server 视图时使用 @@identity 或输出?

    请原谅我 我对 StackOverflow 和 SQL 都是新手 Tl dr 使用时 identity 或任何其他选项 例如scope identity或输出变量 是否也可以使用视图 这是一个使用存储过程的示例 identity SNIP
  • 如何解决此错误:Py4JJavaError:调用 o70.showString 时出错?

    目前我正在开发 PySpark 和 DataFrame 我创建了一个数据框 from pyspark sql import import pandas as pd spark SparkSession builder appName Dat
  • 如何编写一个简单的版本控制系统?

    我想做一个简单的版本控制系统 但我不知道如何构建我的数据和代码 这是一个简短的例子 用户登录 User has two options when uploading a file 提交新文件 提交文件的新版本 用户应该能够看到树 版本不同
  • SQL Case 语句会失败吗?

    有没有办法让 SQL 中的 CASE 语句像 C 中的 case 语句一样失败 我不想做的是下面的例子 但如果这是我唯一的选择 我想我会选择它 EXAMPLE NewValue CASE WHEN MyValue 1 THEN CAST M
  • SSRS报告不显示数据

    我刚刚创建了 SQL Server 2005 SSRS 报告 数据未显示在预览窗格中 数据集是根据字符串参数从存储过程正确填充的 我可以在数据窗格中执行它 在预览窗格中运行报表时 会显示正确的行数 但单元格的内容不包含任何数据 源数据集基于
  • 执行计划中是否考虑了功能?

    当查询在 SELECT 或 WHERE 子句中包含 PL SQL 函数 用户定义函数 时 如何生成执行计划 它是否也计算这些函数的成本并将其显示在执行计划中 或者这些函数只是被忽略 在此先感谢您的帮助 用户生成的函数在 SELECT 或 W
  • 带可选参数的 SQL 更新命令?

    我将大约 500 000 个对象插入数据库 其中许多对象是相同的 在数据库中具有相同的主键表示 但其他字段可能不同 因此我使用方法 更新 如果没有行受影响 插入 问题是 有时一个对象的某些字段设置为 null 从文件中无法读取 并且已经在数
  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • Oracle 函数编译成功,但在执行 PLS-00221 时抛出错误:不是过程或未定义

    我有简单的oracle功能 create or replace function abs test func test in in number return number is test out number BEGIN test out
  • 查找缺失值

    我有一个表 有 2 个重要的列 DocEntry WebId 样本数据就像 DocEntry WebId 1 S001 2 S002 3 S003 4 S005 现在我们可以注意到 在 WebId 列中 S004 丢失了 我们如何通过查询找

随机推荐

  • 预加载图像后触发事件

    这是我用来预加载图像的代码 我不确定它是否是最好的 我的问题是 如何触发和事件 例如alert 完成加载所有图像后的对话框 var preload a gif b gif c gif var images for i 0 i lt prel
  • 使用具有多列的 data.table 将宽形状重塑为长形状

    我有一个宽格式的数据框 如下所示 我想使用 data table Melt 函数将宽形状重塑为长形状 在简单的情况下 我可以拆分两个数据 然后绑定两个数据集 但就我而言 有多个 test i testgr i 列 但必须有更好 更有效的方法
  • 动态添加表单到 Django 表单集

    我想动态地将新表单添加到 Django 表单集 以便当用户单击 添加 按钮时 它会运行 JavaScript 将新表单 是表单集的一部分 添加到页面 这就是我的做法 使用jQuery 我的模板 h3 My Services h3 servi
  • 如何调查“尝试释放未引用的标量”

    Perl 脚本 使用大量本地编写的模块 并且正在积极开发中 刚刚开始生成零星的 尝试释放未引用的标量 SV 0xa6e685c Perl 解释器 全球毁灭期间的 0x96d9008 消息 这总是可重复的 从某种意义上说 特定的命令序列总是会
  • CVXPY 中的初始猜测/热启动:给出解决方案的提示

    在这段代码中 import cvxpy as cvx Examples linear programming Create two scalar optimization variables x cvx Variable y cvx Var
  • VBA Excel 错误处理 - 特别是在函数中 - 专业 Excel 开发风格

    我拿到了 Rob Bovey 写的 Professional Excel Development 一书 它让我大开眼界 我正在通过错误处理重新调整我的代码 然而 还有很多我不明白的地方 我特别需要知道如何在函数中正确使用它 我使用 Bove
  • 将 hashtable.Keys 转换为 List 或其他 IEnumerable

    我知道 我还有其他选择 例如我可以维护一个单独的密钥列表 请不要建议其他选择 我只是想知道我能否成功 请不要问我要解决什么问题或类似的问题 这是一道纯粹 简单的CS题 我想知道是否有人知道如何从Hashtable并将它们扔进List
  • 在 R 中按名称模式选择列表元素

    我有一个像这样的清单 places lt list cities 1 c Madrid Valencia Barcelona countries 1 c Espa a Portugal Francia cities 2 c Alicante
  • 使用 C++ 和 Cocoa 代替 Objective-C?

    我想编写使用 C 和 Cocoa 框架的应用程序 因为 Apple 不支持 Carbon 64 位 C 在 Linux 和 Windows 上的实现似乎相当普通 但在 Mac OS X 上似乎需要额外的 Apple 特定代码片段 如 Obj
  • 理解三维数组

    我正在尝试了解三维数组 我知道它们是二维数组的数组 但是我正在读的书说了一些让我困惑的事情 在我正在阅读的书的练习中 它要求我为全彩图像创建一个三维数组 它给出了一个小例子 如果我们决定选择三维数组 则数组的声明方式如下 int color
  • 是否可以将 AutoLayout 与 UITableView 的 tableHeaderView 一起使用? [复制]

    这个问题在这里已经有答案了 自从我发现AutoLayout我到处都使用它 现在我尝试将它与tableHeaderView 我制造了一个subclass of UIView添加了我想要的所有内容 标签等 及其约束 然后我添加了这个Custom
  • 服务器端事件 (SSE) 未到达客户端

    我正在使用 MEAN 并尝试从服务器端接收事件 为此 我使用 EventSource 但它不起作用 我看到连接是如何打开的 但我没有从服务器收到任何消息 我可以在节点控制台中看到消息是如何发送的 但在客户端没有任何内容 浏览器控制台 我有点
  • 保存混乱的 .jsx 文件时采用更漂亮的格式

    I have format on save启用后 它在 js 文件中工作正常 但是当我尝试将代码保存在 jsx 文件中时 一切都会变得混乱 如何配置我的 prettier 以避免此问题而不禁用format on save 如果您使用的是 V
  • 自动映射器异常:“缺少类型映射配置或不支持的映射。”

    我尝试在 ASP NET MVC 5 应用程序中使用 Ninject 该应用程序使用 AutoMapper 将模型映射到视图模型 反之亦然 不幸的是 我收到一条错误消息 指出缺少类型映射配置 我创建了一个 Ninject 依赖解析器 nam
  • 如何以编程方式设置 dp 中的 EditText 上边距?

    在我的 Android 应用程序中 我想更改 editText 的 topMargin 问题是我想改变它 dp 明智而不是像素明智 我只想更改 topMaring 让另一个保持原样 不将它们设置为零 以编程方式我只能在 int 中设置边距
  • 提升无锁 spsc_queue 缓存内存访问

    我需要非常关注当前多线程项目中的速度 延迟 我试图更好地理解缓存访问 我不清楚无锁队列 例如 boost lockfree spsc queue 如何在缓存级别访问 使用内存 我见过使用队列 其中需要由消费者核心操作的大对象的指针被推入队列
  • 有没有办法使用“请求”通过 python 调用 Azure Devops?

    所以 从我所看到的大多数sources 他们说如果您尝试让 python 程序调用 azure devops api 调用 它会使用 python import 语句 例如 from azure devops connection impo
  • 如何使用android PhoneGap上传文件?

    我使用 Android PhoneGap 创建了应用程序 我想上传文件 即 当我单击上传按钮时 文件选择对话框将打开 然后我选择文件 然后单击该对话框中的打开按钮 我在phonegap API中使用文件传输 但输出不是这样的 如何修改pho
  • 如何在 Silverlight 上显示 tiff 文件?

    如何在 Silverlight 应用程序上显示 tiff 文件 我可以显示除 tiff 之外的任何图像格式 有人可以帮助我吗 谢谢 我成功地在 Silverlight 中显示 TIFF 免费移植很容易LibTiff NET库到 Silver
  • SQL Server - 遇到 0 时重置的累积总和

    我想对列进行累积和 但每当遇到 0 时都会重置聚合值 这是我尝试做的一个例子 该数据集 pk price 1 10 2 15 3 0 4 10 5 5 给出这个 pk price 1 10 2 25 3 0 4 10 5 15 在 SQL