【问题标题】:How to add sum of a column as a new row after a group in SQL select query如何在 SQL 选择查询中的组之后将列的总和添加为新行
【发布时间】:2019-07-23 01:49:26
【问题描述】:

我有一个选择查询,它返回按ParentId 分组的几行。如何在每个 parentId 组之后添加一个包含一列总和的新行?

目前我将数据保存在临时表中,结果如下。

并且我想在每个ParentId 组的末尾添加一个新行,如下所示,其中包含LoanAmount 列的总和。

任何帮助将不胜感激。非常感谢。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您可以使用公用表表达式来实现此目的。在这里,我创建了一个带有 rank 列的 cte,以便按顺序对其进行排序。

    ;WITH cte AS
      (SELECT ParentId,
              sum(LoanAmount) LoanAmount,
                              max(rank) + 1 AS rank
       FROM test
       GROUP BY ParentId)
    SELECT *
    FROM test
    UNION ALL
    SELECT *
    FROM cte
    ORDER BY ParentId, rank
    

    rextester

    【讨论】:

      【解决方案2】:

      在此处查看此链接enter link description here

      我想你想要:

      SELECT  ParentID, SUM(VALUE1), SUM(VALUE2)
      FROM    tableName
      GROUP   BY ID
      

      您不能像在 excel 中那样在每个组之后或底部执行此操作,但您可以有效地在查询中创建一个“新表”。

      是的,看到您更新的评论,您的主要问题是您将其视为 excel,SQL 不是电子表格工具 - 它是一个关系数据库。我建议您阅读 SQL 介绍 - 您会很快掌握这些概念。

      我给你的查询可以创建为存储过程。

      如果您觉得我已经回答了您的问题,请点赞:)

      【讨论】:

        【解决方案3】:

        您可以通过子查询对组求和,然后将它们合并到联合中

           ; with cte as 
           ( select 9999 as Slno, Level, ParentId, Ent_id, relation, sum(colname) as colname from table group by Level, ParentId, Ent_id, relation)
           , ct as ( select row_number() over (partition by ParentId order by level) as Slno,  Level, ParentId, Ent_id, Name, --- rest of your column names
           colname from table 
           union all 
           select Slno, Level, ParentId, Ent_id, '' as Name, ---rest of '' for each column with column name as alias
            colname from cte )
           select Slno, Level, ParentId, Ent_Id, Name, ---- your columns of table
           colname from ct order by Slno
        

        这只是粗略的想法。如有任何困惑,请随时提出。

        发布您的确切架构以获取准确的详细信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-03
          • 1970-01-01
          • 1970-01-01
          • 2019-12-30
          • 1970-01-01
          相关资源
          最近更新 更多