从表中每行除以同一表的总和

时间:2016-06-17 11:16:33

标签: sql reporting-services

我有一个显示事件的查询,对于这个事件,有持续时间。 为了获得持续时间,我在查询中进行了计算:

Sum(cast(EventEndDateTime - EventStartDateTime as float)) as Duration,

表:

Event   Duration
[Pr     10,48
[Al     9,89
[To     1,32
[Co     0,41
[Gh     0,33

我必须将此行的每一行与列持续时间的总和相除。例如:列持续时间的总和= 22,43。 - > (10,48 / 22,43)* 100 = 46,72%

我在这里试过了:

Sum(cast(EventEndDateTime - EventStartDateTime as float)) / (SELECT Sum(cast(EventEndDateTime - EventStartDateTime as float)) From Event) as SumOfDuration

但这给了我不正确的结果。 我使用SSRS

2 个答案:

答案 0 :(得分:1)

您可以在SSRS中执行此操作。

我们假设您有一个包含持续时间的列,以及一个包含事件的详细信息行组。 使用如下表达式:

SUM(Fields!Duration.Value) / SUM(Fields!Duration.Value,"Events")

替换"事件"使用您的详细信息组的名称

SUM有一个SCOPE可选参数

答案 1 :(得分:0)

SQL方法:

select event, duration, duration/sum(duration) over (partition by 1) percent
 from (
       select event, sum(cast(EventEndDateTime - EventStartDateTime as float)) as Duration
       from t
       group by event) as t