Ssrs 2008 函数等价于SQL报表中乘法的SUM()

Ssrs 2008 函数等价于SQL报表中乘法的SUM(),ssrs-2008,aggregate-functions,reporting-services,multiplication,Ssrs 2008,Aggregate Functions,Reporting Services,Multiplication,我正在寻找以下功能或解决方案: =ROUND(SUM(Fields!Value_Is.Value)/SUM(Fields!StartValue.Value),3) 对于SQL Reporting中的图表,我需要将a列中的值相乘。对于求和,我将对图表使用=SUM(列a)。但是我能用什么来乘法呢?我到目前为止还没有找到一个解决方案 目前,我正在计算堆叠柱的值,如下所示: =ROUND(SUM(Fields!Value_Is.Value)/SUM(Fields!StartValue.Value),3

我正在寻找以下功能或解决方案:

=ROUND(SUM(Fields!Value_Is.Value)/SUM(Fields!StartValue.Value),3)
对于SQL Reporting中的图表,我需要将a列中的值相乘。对于求和,我将对图表使用
=SUM(列a)
。但是我能用什么来乘法呢?我到目前为止还没有找到一个解决方案

目前,我正在计算堆叠柱的值,如下所示:

=ROUND(SUM(Fields!Value_Is.Value)/SUM(Fields!StartValue.Value),3)
我需要的不是求和,而是将值相乘。 诸如此类:

=ROUND(MULTIPLY(Fields!Value_Is.Value)/MULTIPLY(Fields!StartValue.Value),3)
编辑#1

好吧,我试着让它运转起来。 图表的表达式如下所示:

=Exp(Sum(Log(IIf(Fields!Menge_Ist.Value = 0, 10^-306, Fields!Menge_Ist.Value)))) / Exp(Sum(Log(IIf(Fields!Startmenge.Value = 0, 10^-306, Fields!Startmenge.Value))))
如果我手动计算我的“需求”,我必须得到以下结果:

在我的SQL报告中,我得到以下结果:

为了简化操作,以下是原始值:

你可以按CW、CQ或CY对图表进行分组 (来自第一张图片的值是FertStufe原始值的聚合和值)

编辑#2

尝试了您的表达式,结果如下:

我只想说清楚:

列中的值

=Value_IS / Start_Value
在第一幅图中,它们彼此相乘

09947 x 10000 x 059401=058573

扩散压延第44周总和

起始值:1900,00价值为:1890,00==收益率:099474

瓦夫无隔层压延第44周总计

起始值:620,00值为:620,00==收益率10000

颗粒压延第44周总计

起始值:271,00值为:160,00==收益率059041


产量扩散x产量晶圆x产量颗粒=图表中所需值=058730

编辑#3 原始值如下所示:

图表在这些字段上分组(如图所示) CY(日历年)、CM(日历月)、CW(日历周)

您可以在此处下载xls格式的数据:

我使用的表达式(从编辑窗口复制/通过)

我已将整个报告结果导出到excel,您可以在此处获得:
这实际上是一个解决办法。但我很确定这是解决这个臭名昭著的问题的唯一办法:D

我就是这样做的:

Exp(∑(Log(X))
,因此您应该做的是:

Exp(Sum(Log(Fields!YourField.Value)))
谁说数学一文不值=D

编辑:

Exp(Sum(Log(IIf(Fields!YourField.Value = 0, 10^-306, Fields!YourField.Value))))
修正了公式

顺便说一下,它已经过测试了

解决Ian的问题:

Exp(Sum(Log(IIf(Fields!YourField.Value = 0, 10^-306, Fields!YourField.Value))))
想法是用一个非常小的数字来改变0。只是个主意

编辑:

Exp(Sum(Log(IIf(Fields!YourField.Value = 0, 10^-306, Fields!YourField.Value))))
根据您最新的问题,这是您应该做的:

Exp(Sum(Log(Fields!Value_IS.Value / Fields!Start_Value.Value)))

我刚刚测试了上面的代码,得到了您希望的结果。

这实际上是一个解决方法。但我很确定这是解决这个臭名昭著的问题的唯一办法:D

我就是这样做的:

Exp(∑(Log(X))
,因此您应该做的是:

Exp(Sum(Log(Fields!YourField.Value)))
谁说数学一文不值=D

编辑:

Exp(Sum(Log(IIf(Fields!YourField.Value = 0, 10^-306, Fields!YourField.Value))))
修正了公式

顺便说一下,它已经过测试了

解决Ian的问题:

Exp(Sum(Log(IIf(Fields!YourField.Value = 0, 10^-306, Fields!YourField.Value))))
想法是用一个非常小的数字来改变0。只是个主意

编辑:

Exp(Sum(Log(IIf(Fields!YourField.Value = 0, 10^-306, Fields!YourField.Value))))
根据您最新的问题,这是您应该做的:

Exp(Sum(Log(Fields!Value_IS.Value / Fields!Start_Value.Value)))

我刚刚测试了上述代码,得到了您希望的结果。

谢谢您的回复。所以公式必须是这样的:=Exp(Sum(Log(Fields!Value_Is.Value)))/Exp(Sum(Log(Fields!StartValue.Value)))这绝对是正确的答案。如果值为@DanielW,则可能存在潜在问题。是的,但请检查我的更新答案,以解决Ian的问题,如果这可能是你的问题。@IanPreston检查我的更新答案。我认为这是一个解决方案,因为这个数字接近零(lim)@DanielW。丹尼尔,我试着用你的示例数据,得到了你想要的结果,0,58。。。打开您的SSM并运行此SQL查询:
选择exp(log(cast(1890 as float)/cast(1900 as float))+log(cast(620 as float)/cast(620 as float))+log(cast(160 as float)/cast(271 as float))
您应该会得到相同的结果。这就是报告所做的。只使用示例数据自己创建一个测试,看看它是否仍然不起作用。也许问题在于你的真实数据。谢谢你的回复。所以公式必须是这样的:=Exp(Sum(Log(Fields!Value_Is.Value)))/Exp(Sum(Log(Fields!StartValue.Value)))这绝对是正确的答案。如果值为@DanielW,则可能存在潜在问题。是的,但请检查我的更新答案,以解决Ian的问题,如果这可能是你的问题。@IanPreston检查我的更新答案。我认为这是一个解决方案,因为这个数字接近零(lim)@DanielW。丹尼尔,我试着用你的示例数据,得到了你想要的结果,0,58。。。打开您的SSM并运行此SQL查询:
选择exp(log(cast(1890 as float)/cast(1900 as float))+log(cast(620 as float)/cast(620 as float))+log(cast(160 as float)/cast(271 as float))
您应该会得到相同的结果。这就是报告所做的。只使用示例数据自己创建一个测试,看看它是否仍然不起作用。也许问题在于你的真实数据。我只是运行了命令,得到了你想要的值。你能发布你正在使用的精确表达式和你的数据吗?我刚刚运行了命令,得到了你想要的值。你能发布你使用的精确表达式和你的数据吗?