存储过程中的分组和循环

2024-06-24

我需要对 MTH1 MTH2 等列进行求和,但对于我传递的参数,它将为同一帐户代码生成六行信息,这是正确的,它应该产生什么我的问题是如何只返回其中一个数据,但是到目前为止,这就是我的存储过程中六行的总和。

ALTER PROCEDURE [dbo].[sumbalances] 
    @AccountRef VARCHAR(500),
    @SortOrder INT,
    @CATEGORY INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT        
        NOMINAL_LEDGER.ACCOUNT_REF, NOMINAL_LEDGER.NAME, 
        NOMINAL_LEDGER.ACCOUNT_TYPE, NOMINAL_LEDGER.BALANCE, 
        NOMINAL_LEDGER.QUICK_RATIO, NOMINAL_LEDGER.SOFA_ID, 
        NOMINAL_LEDGER.PRIOR_YR_MTH1, NOMINAL_LEDGER.PRIOR_YR_MTH2, 
        NOMINAL_LEDGER.PRIOR_YR_MTH3, NOMINAL_LEDGER.PRIOR_YR_MTH4, 
        NOMINAL_LEDGER.PRIOR_YR_MTH5, NOMINAL_LEDGER.PRIOR_YR_MTH6, 
        NOMINAL_LEDGER.PRIOR_YR_MTH7, NOMINAL_LEDGER.PRIOR_YR_MTH8, 
        NOMINAL_LEDGER.PRIOR_YR_MTH9, NOMINAL_LEDGER.PRIOR_YR_MTH10, 
        NOMINAL_LEDGER.PRIOR_YR_MTH11, NOMINAL_LEDGER.PRIOR_YR_MTH12, 
        NOMINAL_LEDGER.PRIOR_YR2_MTH1, NOMINAL_LEDGER.PRIOR_YR2_MTH2, 
        NOMINAL_LEDGER.PRIOR_YR2_MTH3, 
    FROM            
        CATEGORY 
    LEFT JOIN
        NOMINAL_LEDGER ON CATEGORY.CompanyID = NOMINAL_LEDGER.CompanyID
    WHERE 
        ACCOUNT_REF = @AccountRef 
        AND SORT_ORDER = @SortOrder 
        AND CATEGORY = @CATEGORY
END

我想我需要某种循环来保存所有 MTH1 的总和,或者不需要那么复杂。

以下是数据示例。

例如,如果是第 Mth 1,它将添加

40000.00
44000.00

并在 MTH 1 列中返回该总数,但只有一行对所有这些进行求和(如果从那时起)。

Edit 2

请在此处查看我的 sql 小提琴,如果有人可以提供帮助,我在链接类别表时遇到一些问题。这不是上面的主要问题,所以你们可以看到数据

http://sqlfiddle.com/#!18/6c902/1 http://sqlfiddle.com/#!18/6c902/1


你似乎只是想要一个GROUP BY。但您还可以通过其他方式简化查询:

select nl.ACCOUNT_REF, 
    sum(nl.PRIOR_YR_MTH1) as PRIOR_YR_MTH1,
    sum(nl.PRIOR_YR_MTH2) as PRIOR_YR_MTH2,
    . . .  - fill in the rest of the months
from NOMINAL_LEDGER nl join         
     CATEGORY c
     on c.CompanyID = nl.CompanyID
where nl.ACCOUNT_REF = @AccountRef and
      nl.SORT_ORDER = @SortOrder and
      c.CATEGORY = @CATEGORY
group by nl.ACCOUNT_REF;

Notes:

  • The WHERE子句(大概)撤销了LEFT JOIN,将其变成INNER JOIN。所以使用正确的JOIN.
  • 表别名使查询更易于编写和读取。
  • 您似乎希望每个帐户一行,因此查询按帐户聚合并忽略其他非聚合列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储过程中的分组和循环 的相关文章

  • Python 和 SQLite:插入表

    具有以下表架构 tablename name varchar 100 age int sex char 1 有一个list有 3 行 每行代表一个表行 row1 laks 444 M row2 kam 445 M row3 kam 445
  • Python postgreSQL sqlalchemy 查询 DATERANGE 列

    我有一个预订系统 并将预订日期范围保存在 日期范围 列中 booked date Column DATERANGE nullable False 我已经知道我可以通过以下方式访问实际日期booked date lower or booked
  • knex.where容易受到sql注入攻击吗?

    这是一个后续问题https stackoverflow com a 50337990 1370984 https stackoverflow com a 50337990 1370984 它提到knex table where descri
  • 从多个表插入表

    嘿 我有一个连接表 连接两个不相关的表 两个表都有ID的 我需要选择ID从每个表中使用WHERE具有不同的值 例如这就是我的看法 INSERT INTO c aID bID VALUES SELECT a ID WHERE a Name M
  • 检查行是否存在,Laravel

    我有以下数据库结构 items id name user id users table id name user favorites table id user id item id 在我的项目永久链接页面上 我有一个 添加到收藏夹 按钮
  • SQL Server 使用递归 CTE 获取路径

    我想以 1 1 1 2 等格式获取每个部门的路径 这是我的部门表 id name parentId 1 Dep 1 0 2 Dep 2 1 3 Dep 3 0 4 Dep 4 1 5 Dep 5 4 6 Dep 6 2 这是我的递归 CTE
  • SQL Server 2008:TOP 10 和不同的一起

    正如标题所示 我正在使用 SQL Server 2008 如果这个问题非常基本 我深表歉意 我才使用 SQL 几天 现在我有以下查询 SELECT TOP 10 p id pl nm pl val pl txt val from dm la
  • 从表变量中获取列的明确名称

    我可以这样声明一个表变量 DECLARE tv source TABLE c1 int providerName varchar 50 providerSMS varchar 50 如果我执行以下命令 我会看到类似于以下内容的表名称 468
  • 如何让SqlDataReader获取time(7)类型变量?

    我有一个像这样的 SQL Server 表 userID int xCoordinate int yCoordinate int recordTime time 7 itemId int 我想获取给定用户的所有录制时间 现在假设为用户 1
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • 在Django中通过ManyToMany关系添加一个对象

    Django 的 ManyToMany 字段 https docs djangoproject com en dev ref models fields django db models ManyToManyField可以使用填充my fi
  • 从 JDBC MSSQL 获取返回值

    我使用 Microsoft SQL Server JDBC Driver 2 0 通过 Java 连接到 SQL Server 2005 如何从存储过程中获取返回值 我正在做类似的事情 Connection connection dataS
  • End using 是否关闭打开的 SQL 连接

    如果我将 SQLConnection 包装在 using 中 我应该关闭它还是最终 using 处理它 using cn as new system data sqlclient sqlconnection cn open do a bun
  • 测试 ODBC 连接的有效方法

    我们的产品是一个 TCP 监听事务处理器 传入连接被分配一个线程来处理连接和一个数据库连接来使用 我们维护一个数据库连接池 而不是为每个传入的客户端连接建立新的数据库连接的昂贵方法 数据库连接池相当可配置 最小 最大大小 增长率等 一些细节
  • TFS 2017 如何使用 SQL 查询工作项

    我正在寻找一种使用 SQL 选择直接从 TFS 的 SQL 数据库查询工作项的方法 对于 TFS 2010 您可以使用一些数据库视图来实现此目标 TFS2010 如何在关系仓库上使用 SQL 查询工作项 https blogs msdn m
  • T-SQL 中的异步存储过程调用

    如何从另一个存储过程对存储过程进行异步调用 假设我有两个存储过程 SP1 和 SP2 这是一个长时间运行的存储过程 需要很长时间执行 并且不返回任何结果 存储过程SP1定义如下 CREATE PROCEDURE SP1 AS BEGIN c
  • 如何在SQL Server数据库的所有表的所有列中搜索特定字符串?

    我们想要在拥有大约 120 个表的所有数据库中搜索一个字符串 即 Hello World 我们考虑过像 mysql dump 一样进行转储 但它以奇怪的 bak 格式出现 应在每个表的每一列中进行搜索 任何类型的脚本都可以做到这一点 或者这
  • Oracle 中的 if(条件, then, else)

    MySQL MSSQL 有一个简洁的小内联 if 函数 您可以在查询中使用它来检测空值 如下所示 SELECT foo a field AS a field SELECT if foo bar is null 0 foo bar AS ba
  • PowerShell:带有 Get-Credential 的 invoke-sqlcmd 不起作用

    我从未见过如此简单的脚本会如此失败 SQLServer localhost cred Get Credential invoke sqlcmd ServerInstance SQLServer Credential cred Query s
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1

随机推荐

  • Android sqlite 日志报告和 db.close()

    日志报告数据库或游标未关闭 我基本上有一个带有自定义表面视图的活动 并使用处理程序向活动报告 当我收到消息时 我会显示一个警报对话框并更新数据库 private Handler handler new Handler public void
  • QImage 转换为 QML

    我的应用程序通过网络接收 JPEG 实时流 每秒 16 帧 直播流应使用 QML 显示 接收部分是用C 编写的 所有UI都是用QML编写的 如何将图像数据输入 QML 窗口 我已经研究过如何显示 QImage 但还没有找到解决方案 实现 Q
  • 当恰好有一个选项非空时执行某项操作

    如果两个选项之一非空 我想计算一些东西 显然这可以通过模式匹配来完成 但是有更好的方法吗 o1 o2 match case Some o None gt Some compute o case None Some o gt Some com
  • project.parent.name 和parent.name 之间的区别以及在pom.xml 中使用finalName

    对线程的研究具有显式 FinalName 的 Maven 将无法正常工作 https stackoverflow com questions 40336878 maven with an explicit finalname wont wo
  • ASP.NET锁定线程的方法

    我正在使用 C 开发 ASP NET 表单 Web 应用程序 我有一种为客户创建新订单的方法 它看起来与此类似 private string CreateOrder string userName Fetch current order O
  • C++ for 循环和基于范围的循环性能

    我读到基于范围的循环在某些编程语言上具有更好的性能 C 中也是这样吗 例如 int main vector
  • 将 RenderTargetBitmap 转换为 System.Drawing.Image

    我有 3D WPF 视觉对象 我想将其传递到 Excel 单元格 通过剪贴板缓冲区 对于 普通 BMP 图像 它可以工作 但我不知道如何转换RenderTargetBitmap 我的代码如下所示 System Windows Media I
  • 如何在 C# 中检查对象是否可序列化

    我正在寻找一种简单的方法来检查 C 中的对象是否可序列化 正如我们所知 您可以通过实现以下方式使对象可序列化可序列化接口或通过放置 可序列化 在班级中名列前茅 我正在寻找一种快速的方法来检查这一点 而不必反映该类来获取其属性 使用界面会很快
  • 此代码中 Matlab 与 C++ 速度比较

    我编写了简单的 C 代码并在 C 中对其进行了测试 然后我通过以下方式为 MATLAB 调整了相同的代码mex file name cpp并在 MATLAB 中运行相同的代码 该代码使用与 C 相同的编译器 这是代码 int k for i
  • 如何为 java 调用者声明返回类型为“void”的 Kotlin 函数?

    我有一个完全用 Kotlin 编写的库 包括其公共 API 现在该库的用户使用 Java 这里的问题是 Kotlin 函数具有返回类型Unit未编译为返回类型void 结果是 Java 端必须始终为实际上无效的方法返回 Unit INSTA
  • 用于存储键值映射的最佳 PostgreSQL 数据类型?

    我想将一个简单的键值字符串映射存储为 PostgreSQL 表中的字段 我打算将地图视为一个整体 即 始终选择整个地图 并且永远不要通过其键或值进行查询 我读过文章比较hstore json and jsonb 但这些并不能帮助我选择哪种数
  • 如何在 SwiftUI 中声明“全局@State变量”?

    我是 SwiftUI 新手 目前正在构建我的第一个应用程序 但是 我有一个问题 我正在编写一个多视图应用程序 在其中我想使用某种全局变量以便能够从我的所有视图访问和编辑它们 例如 我在应用启动时询问用户的 性别 体重 和 许可证 但是 我也
  • 为什么在 Numpy 中双布尔索引会得到这样的结果?

    我对最后一个表达式的结果感到惊讶 gt gt gt from numpy import array arange gt gt gt a arange 12 reshape 3 4 gt gt gt b1 array False True T
  • 在react.js 中的 componentDidMount() 中执行 fetch 之前,如何通过 navigator.geolocation 获取用户的位置?

    我尝试过多种不同的方法 但我被难住了 不熟悉如何在 React 中使用 Promise 和进行 api 调用 这就是我现在所拥有的 import React Component from react import Column from C
  • Chromedriver 在 Selenium 测试中未加载页面

    我在使用 chromedriver exe 以及我在 Selenium 的帮助下编写的一些单元测试时遇到了异常情况 当使用 chromedriver 的第一个测试执行时 浏览器启动并且测试通过 但是 对于使用 chromedriver 的以
  • 有没有更好的方法来使用Tornado处理index.html?

    我想知道是否有更好的方法来使用 Tornado 处理我的 index html 文件 我对所有请求使用 StaticFileHandler 并使用特定的 MainHandler 来处理我的主要请求 如果我只使用 StaticFileHand
  • Enum.GetName 与 Enum.ToString

    对于这个枚举 Enum MyEnum Value End Enum 有两种方法获取名称表示Value of MyEnum Value Enum GetName GetType MyEnum MyEnum Value aka Enum Get
  • 如何使用 OR/AND 运算符在 GitHub 上进行搜索

    如何在 GitHub 上搜索包含关键字 java AND python 或 C 的问题 是否可以使用 OR AND 等逻辑运算符来表示搜索 事实证明 GitHub并没有提供实现ANR OR这样的搜索逻辑的函数 我想到的解决方案是编写一个爬虫
  • 尝试使 Hazelcast 集群与 JCache 兼容客户端一起使用时出现异常

    我正在尝试让一个小型 Hazelcast 集群与简单的 JCache 兼容客户端配合 不幸的是 我得到了异常 java lang IllegalArgumentException 没有使用名称注册的服务 hz impl cacheServi
  • 存储过程中的分组和循环

    我需要对 MTH1 MTH2 等列进行求和 但对于我传递的参数 它将为同一帐户代码生成六行信息 这是正确的 它应该产生什么我的问题是如何只返回其中一个数据 但是到目前为止 这就是我的存储过程中六行的总和 ALTER PROCEDURE db