【问题标题】:What is the proper way of referencing a field in a SSRS dataset?引用 SSRS 数据集中字段的正确方法是什么?
【发布时间】:2015-07-13 03:31:21
【问题描述】:

我正在使用 SSRS 2014 SP1 x64 和 VS2013 更新 5。

我有以下表达式来尝试计算报表上的老化。

=SUM(IIF(DateDiff("d", (Fields!OrderDate.Value, "Invoice"), Now())<=0, (Fields!LineAmount.Value, "Invoice"), 0))
=SUM(IIF(DateDiff("d", (Fields!OrderDate.Value, "Invoice"), now())>=1 and DateDiff("d", (Fields!OrderDate.Value, "Invoice"),Now())<=30, (Fields!LineAmount.Value, "Invoice"), 0))
=SUM(IIF(DateDiff("d", (Fields!OrderDate.Value, "Invoice"), now())>=31 and DateDiff("d", (Fields!OrderDate.Value, "Invoice"), Now())<=60, (Fields!LineAmount.Value, "Invoice"), 0))
=SUM(IIF(DateDiff("d", (Fields!OrderDate.Value, "Invoice"), now())>=61 and DateDiff("d", (Fields!OrderDate.Value, "Invoice"), Now())<=90, (Fields!LineAmount.Value, "Invoice"), 0))
=SUM(IIF(DateDiff("d", (Fields!OrderDate.Value, "Invoice"), now())>=91, (Fields!LineAmount.Value, "Invoice"), 0))

现在,当我尝试将 First 添加到字段选择器时,我收到一条错误消息,指出 ... uses a First, Last or Previous aggregate in an outer aggregate.

我究竟如何从发票数据集中引用这个字段(至少有两个数据集)?

我这样做对吗?

【问题讨论】:

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


    【解决方案1】:

    您需要使用lookup 函数来引用第二个数据集中的字段

    【讨论】:

    • Lookup 函数如何帮助返回单个字段的值? RunningValue(expression, function, scope) 不是更好的聚合函数吗?这样我就可以指定范围而不必比较值。
    • 正如您提到的,您的报告中有多个数据集。我猜你想要的是将 Invoice 数据集中的字段放入嵌入了另一个数据集的 tablix/matrix 中。查找函数类似于连接两个数据集的 SQL 连接函数。除了 Lookup 函数和 LookupSet 函数,大多数 RS 函数只能在一个数据集中工作。
    【解决方案2】:

    我相信以下方法会起作用:

    =IIF(DateDiff("d", First(Fields!OrderDate.Value, "Invoice"), Now())<=0, RunningValue(Fields!LineAmount.Value, Sum, "Invoice"), 0)
    =IIF(DateDiff("d", First(Fields!OrderDate.Value, "Invoice"), now())>=1 and DateDiff("d", First(Fields!OrderDate.Value, "Invoice"),Now())<=30, RunningValue(Fields!LineAmount.Value, Sum, "Invoice"), 0)
    =IIF(DateDiff("d", First(Fields!OrderDate.Value, "Invoice"), now())>=31 and DateDiff("d", First(Fields!OrderDate.Value, "Invoice"),Now())<=60, RunningValue(Fields!LineAmount.Value, Sum, "Invoice"), 0)
    =IIF(DateDiff("d", First(Fields!OrderDate.Value, "Invoice"), now())>=61 and DateDiff("d", First(Fields!OrderDate.Value, "Invoice"),Now())<=90, RunningValue(Fields!LineAmount.Value, Sum, "Invoice"), 0)
    =IIF(DateDiff("d", First(Fields!OrderDate.Value, "Invoice"), now())>=91, RunningValue(Fields!LineAmount.Value, Sum, "Invoice"), 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 2012-09-22
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2015-03-27
      • 2013-03-02
      • 2021-07-18
      相关资源
      最近更新 更多