我有一个显示事件的查询,对于这个事件,有持续时间。 为了获得持续时间,我在查询中进行了计算:
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
答案 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