在 SQL Server 中的计算列上运行总计
Posted
技术标签:
【中文标题】在 SQL Server 中的计算列上运行总计【英文标题】:Running total on calculated column in SQL Server 【发布时间】:2021-12-20 08:09:05 【问题描述】:我正在使用 SQL 代码获取重复的列的运行总计,在下面的屏幕截图中,计算了列 WeightedBilled
,我在组级别的报告中使用它作为 MAX(WeightedColumn)
。
现在我想添加一列,添加 WeightedBilled
的值,然后只选取该列的一个值。
当我使用 over partition by 子句时,它会添加所有重复值。
我的代码是:
SUM( WeightedBilled) OVER (PARTITION BY(CheckProjID), rpt_tEmployeeName) AS EmpLevelWeightedBill`,
在 s-s-rS 2005 报告方面:深色背景是我想要的值总和。
Employee $2000 (this is what I need here)
Project 1 $500 (displayed as max(weightedBilled))
Project 2 $600 (displayed as max(weightedBilled))
Project 3 $700 (displayed as max(weightedBilled))
Project 4 $200 (displayed as max(weightedBilled))
[报表布局]
【问题讨论】:
如果您想获得兴趣和答案,最好不要发布images的数据,我们不能从图像中剪切和粘贴,示例数据应该是消耗性文本在您的问题中,最好是 create 和 insert 语句,或者DB<>Fiddle 链接。一个好的 SQL 问题会有一个Minimal, Reproducible Example “在 s-s-rS 2005 报告方” s-s-rS 2005?这意味着您也在使用 SQL Server 2005。如果您想要运行总计,则必须使用三角形 JOIN。更好的解决方案是使用受支持的 SQL Server 版本,而不是使用大约 8 年没有任何支持的版本。 所有支持的 SQL Server 版本都支持累积聚合。 【参考方案1】:你的问题不是很清楚,但假设你想将一个字段的最大值相加,并且假设你有一个名为 EmployeeRowGroup 的员工行组,那么表达式将如下所示。
=SUM(MAX(Fields!WeightedBilled.Value, "EmployeeRowGroup"))
行组区分大小写,必须用双引号括起来。
【讨论】:
以上是关于在 SQL Server 中的计算列上运行总计的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2012 Windowing 函数计算运行总计