表达以获取百分比

时间:2018-06-27 14:34:20

标签: sql-server reporting-services ssrs-2012

我有一个报告,该报告的交易类型为行组。有两种不同的类型。我想获得一种类型2与类型1的百分比。

我不确定该怎么做,我假设我需要使用一个表达交易类型名称的表达式,然后根据其他类型进行计算。

enter image description here

因此,我希望将7月的SOP +与SOP-的百分比相比,而不是7月的总数,因此为1.96%。为了清楚起见,SOP +中的数字不视为负数。

2 个答案:

答案 0 :(得分:1)

当您设计要在报表中使用的查询时,通常更容易在单独的列中使用不同类型的值。您可以让报告为您完成大部分分组和汇总。在这种情况下,表达式将是这样的:

=Fields!SOP_PLUS.Value / Fields!SOP_MINUS.Value

由于它们都在同一列的行中,因此您必须使用一些逻辑将它们分成几列,然后执行操作。

您需要将两个计算出的字段添加到数据集中。使用这样的表达式获取值:

=IIf(Fields!TYPE_CODE.Value = "SOP+", Fields!SOP.Value, Nothing)

换句话说,您将拥有新的列,这些列的正负值仅在其他行中带有空白。现在您可以使用类似的表达式来进行比较。

=Max(Fields!SOP_PLUS.Value) / Max(Fields!SOP_MINUS.Value)

请记住,Max函数适用于当前组范围。当您将多个行和列组添加到混合中时,这可能会变得更加复杂。如果这成为问题,我建议您考虑重写查询以在单独的行中提供这些值,以简化报表设计。

答案 1 :(得分:0)

WITH table1([sop-], [sop+]) AS (
     SELECT 306, -6
UNION ALL
     SELECT 606, -14)

SELECT(CAST([sop+] AS DECIMAL(5, 2)) / CAST([sop-] AS DECIMAL(5, 2))) * 100.0 FROM table1;

返回:

  

-1.960784000

     

-2.310231000