如何在SQL选择查询中的组之后将列总和添加为新行

时间:2019-03-01 03:50:05

标签: sql-server

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

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

enter image description here

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

enter image description here

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

3 个答案:

答案 0 :(得分:2)

您可以使用公用表表达式来实现此目的。在这里,我创建了一个带有等级列的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

答案 1 :(得分:0)

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

   ; 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

这只是一个粗略的想法。随时提出任何困惑。

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

答案 2 :(得分:0)

在此enter link description here

查看此链接

我想你想要

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

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

是的,看到更新的评论后,您的主要问题是像Excel一样思考它,SQL不是电子表格工具-它是一个关系数据库。我建议通过SQL入门进行学习-您很快就会掌握这些概念。

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

如果您认为我已经回答了您的问题,请多加赞赏:)