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

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(使用前将#替换为@)

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

  • 使用 xmlagg 时出现子查询错误和太多值

    我在连接许多大型表中的所有数据时遇到问题 我昨天对此提出了问题 但不幸的是 listagg 似乎不是一个好的选择 链接子查询返回多行 https stackoverflow com questions 54651144 subquery r
  • 如何对 SQL Server Express 进行实时更改

    我一直在使用 VS studio 开发一个 ASP NET Web 应用程序 我正在使用 SQL Server Express 在开发过程中 我一直在我的服务器上测试我的网络应用程序 每次我需要更新数据库时 我都会简单地删除旧数据库 位于我
  • 按两列的最小值排序

    I use SQL Server 2008 R2 我需要按两列的最小值对表进行排序 该表如下所示 ID integer Date1 datetime Date2 datetime 我希望我的数据按至少两个日期排序 以这种方式对该表进行排序的
  • 将此 MySQL 查询转换为 PyGreSQL

    我正在开发一个 Ruby 应用程序 它使用 mysql 函数 XOR 和 BIT COUNT 不过 我现在需要在运行 PyGreSQL 的 Heroku 上运行该应用程序 我找不到任何可以帮助我的 PyGreSQL 文档 那么任何人都可以翻
  • SSRS仅显示第一行

    我在 SSRS 中有一个非常基本的报告 显示数据网格 查询正确返回多行 但报告仅显示第一行 查询就像 SELECT FROM 一样简单 我没有任何特殊的格式 并且 tablix 位于报告的详细信息部分 而不是意外的页眉或页脚 我还可以检查什
  • 部署 dacpac 所需的权限

    我正在尝试使用 sqlpackage exe 在租户上部署 dacpac 目前 我正在向将部署此功能的帐户授予 SysAdmin 或 db owner 权限 并且它工作正常 但在生产中 如果目标租户数据库属于其他应用程序 我可能无法获得这些
  • SQLite 条件 ORDER BY 中的 DESC

    我需要选择按以下逻辑排序的记录 但是当 DESC 处于条件中时 SQLite 会引发错误 ORDER BY CASE WHEN parentGUID IS NULL THEN datePosted DESC ELSE datePosted
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T
  • 在 Navicat Premium 中连接到 LocalDB 服务器

    Recently I installed LocalDb Serer on my laptop I am trying to establish a connection between Navicat and LocalDB server
  • oracle中的区间函数

    Query SELECT INTERVAL 300 month INTERVAL 54 2 year to month INTERVAL 11 12 10 1234567 hour to second FROM DUAL 上述查询的输出是
  • 优化 LINQ 查询 - 如何缩短执行时间?

    我想知道是否有一个好的方法来优化我的 LINQ 查询 我正在使用类似于以下内容的 LINQ 查询从数据库检索数据 PKs is a list of integers var import context table Where x gt P
  • Mysql 在给定日期时间范围内插入随机日期时间

    使用 SQL 我可以在给出范围的列中插入随机日期时间值吗 例如 给定一个范围2010 04 30 14 53 27 to 2012 04 30 14 53 27 我对范围部分感到困惑 因为我刚刚做了这个 INSERT INTO someta
  • 使用 LIMIT/OFFSET 运行查询并获取总行数

    出于分页目的 我需要使用以下命令运行查询LIMIT and OFFSET条款 但我还需要计算该查询将返回的行数 而不需要LIMIT and OFFSET条款 我想运行 SELECT FROM table WHERE whatever ORD
  • 在 Sql Server 中启用 DTD 支持

    我有各种 xml 文档需要存储在数据库列中 这些文档包含对 DTD 的引用 并且 SQL Server 不会导入 xml 因为它存在安全风险 如何在数据库上启用 DTD 支持 以便它可以让我插入 xml 内容 你必须CONVERT首先 MS
  • 'ExecuteReader 需要一个开放且可用的连接。连接的当前状态是打开'

    用 C 编写的相当大的 Web 应用程序不断抛出 2 个错误 ExecuteReader 需要一个开放且可用的连接 连接的当前状态是打开的 和 阅读器关闭时调用 Read 的尝试无效 这些错误是零星的 过去页面在大约 95 的情况下加载良好
  • 为什么MERGE语句的目标表不允许启用规则?

    我们有一个使用以下 SQL 更新数据库的过程 IF NOT EXISTS SELECT FROM Target Table WHERE Target Table ID BEGIN INSERT END ELSE BEGIN UPDATE E
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • MSSQL 选择前 10 名获胜分数,包括并列以及每个类别中至少一个

    我使用以下语句获得了一些帮助 找到了前 10 名分数 包括并列条目 select T EntryID T CategoryID T Score from select EntryID CategoryID Score dense rank
  • 如何使用 SQL - INSERT...ON DUPLICATE KEY UPDATE?

    我有一个脚本可以捕获推文并将其放入数据库中 我将在 cronjob 上运行脚本 然后在我的网站上显示数据库中的推文 以防止达到 Twitter API 的限制 所以我不想在我的数据库中有重复的推文 我知道我可以使用 INSERT ON DU
  • Access 2013 SQL 中的转换和透视

    如何使用 TRANSFORM 和 PIVOT 函数从第一个表获取第二个表 TABLE 01 Config ID ConfigField ConfigValue 11 Name Basic 11 Version 1 01 11 Owner J

随机推荐

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

    我想 扫描文档以查找具有特定类名的所有元素 对该元素的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