从行和列计算的问题(将两列与不同行的第三列相加)

2024-01-12

参考我之前的问题添加 GROUP BY 子句产生的列 https://stackoverflow.com/questions/13892128/adding-columns-resulting-from-group-by-clause/13892514#13892514

SELECT AcctId,Date,
   Sum(CASE
         WHEN DC = 'C' THEN TrnAmt
         ELSE 0
       END) AS C,
   Sum(CASE
         WHEN DC = 'D' THEN TrnAmt
         ELSE 0
       END) AS D
FROM   Table1 where AcctId = '51'
GROUP  BY AcctId,Date
ORDER  BY AcctId,Date

我执行了上面的查询并得到了我想要的结果..

  AcctId       Date         C        D
    51       2012-12-04   15000      0
    51       2012-12-05   150000  160596
    51       2012-12-06    600        0

现在我要对同一查询执行另一个操作,即

我需要这样的结果

  AcctId   Date                                Result

    51       2012-12-04    (15000-0)->       15000  
    51       2012-12-05   (150000-160596) + (15000->The first value)  4404
    51       2012-12-06     600-0         +(4404 ->The calculated 2nd value) 5004

是否可以使用相同的查询?


使用递归 CTE

;WITH cte AS
 (
  SELECT AcctId, Date,
     Sum(CASE
           WHEN DC = 'C' THEN TrnAmt
           ELSE 0
         END) AS C,
     Sum(CASE
           WHEN DC = 'D' THEN TrnAmt
           ELSE 0
         END) AS D,
     ROW_NUMBER() OVER (ORDER BY AcctId, Date) AS Id 
  FROM   Table1 where AcctId = '51'
  GROUP  BY AcctId, Date
  ), cte2 AS
 (
  SELECT Id, AcctId, Date, C, D, (C - 0) AS Result
  FROM cte
  WHERE Id = 1
  UNION ALL
  SELECT c.Id, c.AcctId, c.Date, c.C, c.D, (c.C - c.D) + ct.Result
  FROM cte c JOIN cte2 ct ON c.Id = ct.Id + 1
  )
  SELECT *
  FROM cte2

简单的例子SQLFiddle http://sqlfiddle.com/#!3/45911/1/0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从行和列计算的问题(将两列与不同行的第三列相加) 的相关文章

  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 意外的查询结果

    为什么我从 sql server 得到以下结果 SELECT 12 C1 CONVERT int C2 CASE WHEN THEN equal ELSE not equal END C3 Sql Server Fiddle 演示 http
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • SQL返回两行之间的秒差

    这个问题与SQL Server有关 我有下表 id size batch code product code additiontime 1 91 55555 BigD Red 2017 05 15 13 00 00 2 91 55555 B
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 同一索引操作上的不同估计行?

    简介和背景 我必须优化一个简单的查询 下面的示例 重写几次后 我认识到同一个索引操作的估计行数会根据查询的编写方式而有所不同 最初 该查询执行了聚集索引扫描 因为生产中的表包含二进制列 该表相当大 大约 100 GB 并且全表扫描执行起来需
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • 读取 BCP 格式文件时发生 I/O 错误

    今天 我创建了一个新的临时表和一个 BCP fmt 文件 我创建了一些测试数据并尝试从命令行运行 BCP 实用程序 我从之前的工作中获得了大约 20 个不同格式的文件和暂存表 这是我第一次遇到此错误 我该如何修复这个错误 请注意 我在下面添
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • 同时从2个表中删除?

    我正在使用 asp net 和 sql 服务器 我有 2 个表 类别和产品 在产品表中 我的categoryId 为FK 我想要做的是 当我从类别表中删除类别时 我希望该类别中的所有产品都将在产品表中删除 如何才能做到这一点 我更喜欢使用存
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • SQL Server 数据库架构版本控制和更新

    对于我的应用程序 我必须支持更新方案 并且数据库可能会受到影响 我希望能够从旧版本更新到最新版本 而无需安装中间版本 例如 假设我有版本 A 最旧的版本 B 中间版本 和 C 新版本 我希望能够将版本 A 直接更新到版本 C 对于应用程序文
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么

随机推荐

  • 按类名获取所有元素并更改类名

    我想 扫描文档以查找具有特定类名的所有元素 对该元素的innerHTML 执行一些关键功能 更改该元素的类名 这样如果我稍后再进行一次扫描 就不会重做该元素 我认为这段代码可以工作 但由于某种原因 它在第一个实例之后打破了循环 并且元素的类
  • 有效的 Unicode 字符串可以包含 FFFF 吗? Java/CharacterIterator 损坏了吗?

    这是摘录自java text CharacterIterator http docs oracle com javase 8 docs api java text CharacterIterator html文档 This interfac
  • 检查整数序列是否递增

    我只部分地解决了下面的问题 给定一个整数序列 检查是否可以通过删除不超过一个元素来获得严格递增的序列 Example sequence 1 3 2 1 almostIncreasingSequence sequence false sequ
  • 为所有任务获取自定义参数?

    我想将一个参数传递给 rake 而与我运行的任务无关 例如 rake my arg foo rake my arg foo install rake my arg foo upgrade rake my arg foo bar 有没有办法做
  • 映射器是适配器模式的一个版本

    我一直在尝试了解适配器模式 在所有模式中 我最难想象它的用途 我想我明白所实现的目标 对我来说 它将一个对象转换为另一个接口 以便客户端可以使用它 在我看到的示例中 它们是有道理的 但我觉得我可以使用映射器来实现相同的目的 该映射器接受一个
  • 如何强制 cmake 使用没有完整路径的 cl.exe?

    我正在构建一个使用 CMake 的开源项目 kst v2 0 8 我使用 CMake v2 8 12 2 和 MSVC 2008 作为编译器 并生成 NMake makefile 以在命令行上构建它 我可以通过此设置成功构建它 这些版本是强
  • 自修改代码的用例?

    On a 冯 诺依曼架构 http en wikipedia org wiki Von Neumann architecture 程序和数据都存储在内存中 因此程序可以自行修改 这对程序员有用吗 你能举一些例子吗 变质 我想到的一个 有问题
  • ChartJS 轴刻度回调函数中的条件未返回预期的标签

    我有一个包含一年中每一天数据的图表 我想将 x 轴简单地显示为月份 我设置了以下回调函数 它 粗略地 从标签集中获取月份 检查它是否已经存在 如果不存在 则将其作为轴标签返回 let rollingLabel function label
  • 创建一个触发器,在更新列时将值插入到新表中

    我一直在此处查看有关触发器的一些先前答案 但找不到我确切需要的内容 但我确信我的问题之前已被提出 回答过 我正在尝试跟踪表 1 中的列和列的任何更改 如果此值发生变化 我想通过将现有值和新值插入到带有日期的不同表中来跟踪这些值 我一直在考虑
  • C# 更改文本框中一个字符的颜色

    C WPF 如何仅更改文本框中一个字符的颜色 示例 Word Hello H 的颜色变为红色 您不能使用文本框执行此操作 但可以使用 Richtextbox WPF RichTextBox 教程 http www c sharpcorner
  • 如何从 DataGrid 获取单元格?

    我有一个 DataGrid net Framework 3 5 WPFToolKit 我想更改某些单元格的边框 左或右 一个 两个或三个 那么我怎样才能访问单个单元呢 这可能吗 我找到了一些解决方案 但它们适用于 net 4 您可以扩展 D
  • 在 C++11 中指定成员函数作为回调

    我有以下内容 typedef std function
  • unregisterForRemoteNotifications 仍然在“设置”中显示“允许通知”

    我正在创建一个设置页面 允许用户打开和关闭推送通知 这是我的问题 如果用户在初始系统提示时允许推送通知 然后改变主意并将 UISwitch 设置为 否 则我的关闭开关操作为 UIApplication共享应用程序 unregisterFor
  • ListFragment / CursorAdapter 显示为空(无数据)

    我无法让列表视图显示我的数据 它只显示空 无数据文本视图 我已经尝试解决这个问题有一段时间了 搜索了 stackoverflow 和网络 尝试了很多不同的事情 Logcat 显示我的 newView bindView 没有被调用 到达 我认
  • 如何在Python中显示列表元素的索引? [复制]

    这个问题在这里已经有答案了 我有以下代码 hey lol hey water pepsi jam for item in hey print item 我是否在项目之前显示列表中的位置 如下所示 1 lol 2 hey 3 water 4
  • 自动完成文本视图设置错误

    密码字段是AutoCompleteTextView我正在尝试做setError当它为空时 但我不想显示这个红色感叹号 我该怎么做 附 在此之上的字段 也是AutoCompleteTextView mailview 但是当我这样做时setEr
  • notepad++正则表达式如何从此列表中提取userId

    我有下面这个列表 originalscrape scrapeDate userId username full name is private follower count following count media count biogr
  • 标签栏按钮全灰

    我正在尝试创建一个选项卡栏控制器 但上次我是使用 iOS 6 1 进行的 但是现在 当我将选项卡栏控制器放在情节提要上时 它不会显示按钮 并且我尝试对背景和文本进行的任何修改都不会出现 有人知道我该如何修复它吗 下面是所描述问题的图像 Th
  • 向量化矩阵各行的运算

    我想矢量化 apply a which矩阵运算X如下图所示for循环的结果是向量ind X matrix 1 20 4 5 V sample 1 20 4 ind numeric for i in 1 nrow X ind i max c
  • 从行和列计算的问题(将两列与不同行的第三列相加)

    参考我之前的问题添加 GROUP BY 子句产生的列 https stackoverflow com questions 13892128 adding columns resulting from group by clause 1389