我有一个选择查询,该查询返回由ParentId
分组的几行。我该如何在每个parentId
组之后添加一个新的一行总和为一列?
目前,我已将数据保存在临时表中,结果如下。
我想在每个ParentId
组的末尾添加一个新行,如下所示,列LoanAmount
的总和。
任何帮助将不胜感激。非常感谢。
答案 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
答案 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)
我想你想要
SELECT ParentID, SUM(VALUE1), SUM(VALUE2)
FROM tableName
GROUP BY ID
您不能像excel中那样在每个组之后或在底部执行此操作,但是您可以在查询中有效地创建“新表”。
是的,看到更新的评论后,您的主要问题是像Excel一样思考它,SQL不是电子表格工具-它是一个关系数据库。我建议通过SQL入门进行学习-您很快就会掌握这些概念。
我给您的查询可以创建为存储过程。
如果您认为我已经回答了您的问题,请多加赞赏:)