以表达式为值对 Tablix 进行排序
Posted
技术标签:
【中文标题】以表达式为值对 Tablix 进行排序【英文标题】:Sorting Tablix with an Expression as its Value 【发布时间】:2021-07-16 14:33:51 【问题描述】:我是 s-s-rS 新手,无法对数据进行排序。
我有一个我正在尝试排序的列,它具有以下表达式: =((SUM(VAL(IIF(Fields!SecTypeBaseCode.Value="cs",Fields!Marketvalue.Value,0))))/ (Sum(Fields!Marketvalue.Value)+Sum(Fields!AccruedInterest.Value)))/(Fields!EquityTarget.Value/100)
我为了尝试对其计算值进行排序,我用表达式创建了一个计算字段。然后我尝试根据计算字段进行排序。但是,每次我这样做都会给我一个错误,因为表达式有一个聚合。知道如何解决此问题或对其进行排序吗?
【问题讨论】:
您是否尝试过直接使用表达式作为排序顺序,而不是在计算字段中? 嗨,是的,我已经尝试过这样做。我发布了以下内容: =IIF( ((SUM(VAL(IIF(Fields!SecTypeBaseCode.Value="cs",Fields!Marketvalue.Value,0))))/(Sum(Fields!Marketvalue.Value)+Sum (Fields!AccruedInterest.Value)))/(Fields!EquityTarget.Value/100) = ">1", 1) ,仍然得到相同的错误,即存在聚合。 您的评论中的表达式不正确,括号的数量是奇数,最后一部分是将数字与字符串进行比较。尝试使用原始表达式并将其放入表格的列中,确保返回正确的数字,然后您应该能够将其放入行组的排序属性中。 您已经对 GROUP 属性进行了聚合排序。您无法从 tablix 或数据集执行此操作。 仍在尝试解决此问题,感谢您提供的信息。好像当我将排序功能放在组属性中时,它不会对数据进行排序,尽管错误确实消失了。是否可以在函数中使用 Me.Value 而不是整个公式? 【参考方案1】:用于排序的聚合表达式需要在单个项目的组上,而不是在数据集、表格或图表的属性上。
您可能会收到一个静默错误,该错误允许报告运行,但由于可能出现除以零的问题而无法评估表达式。如果您在 Visual Studio 中预览报告,您可能会在错误列表中看到错误。
s-s-rS 喜欢聪明一点,检查除以零时可能出现的问题。不幸的是,它会找到任何字段可能为零的地方。要解决此问题,请使用 IIF 语句,以便将可能的零除数替换为 1,将分子替换为零。你的表达式有点复杂,因为你有两个除数,但它应该是这样的
= IIF(Sum(Fields!Marketvalue.Value + Fields!AccruedInterest.Value) = 0
OR Fields!EquityTarget.Value = 0,
0,
SUM(IIF(Fields!SecTypeBaseCode.Value="cs", Fields!Marketvalue.Value, 0))
)
/
IIF(Sum(Fields!Marketvalue.Value + Fields!AccruedInterest.Value) = 0,
1,
Sum(Fields!Marketvalue.Value + Fields!AccruedInterest.Value))
/
IIF(Fields!EquityTarget.Value = 0, 1, Fields!EquityTarget.Value)
*
100
另请参阅: Avoid divide by zero in s-s-rS expression
s-s-rS Expression Divide by Zero Error
Attemted to divide by zero error in s-s-rS Expression
【讨论】:
以上是关于以表达式为值对 Tablix 进行排序的主要内容,如果未能解决你的问题,请参考以下文章