自定义表达式的额外行以显示 "filtered" 总和

Extra rows for custom expression to display "filtered" sum

所以我有一个 table 从过程中获取结果集,一切看起来都很棒,包括底部的总数。用户要求在底部提供一些自定义行,这些行仅代表特定条件或组的总计。假设您有一个名为 AuctionPrice 的字段。在数据集中,它来自 sql 过程中的聚合。

如果我在 table 和 "AuctionPrice" 字段的底部放置一个额外的行,我使用这样的表达式 =SUM(IIF(Fields!AuctionPrice > 0, Fields!AuctionPrice, 0))

这产生了一个错误,而在比较中使用不同字段的表达式工作正常。

您是否不能使用已包含在数据集中聚合(求和)中的字段的表达式?

这是因为Fields!AuctionPrice列中有特殊字符(!)。您需要使用方括号

转义它
select SUM(IIF([Fields!AuctionPrice] > 0, [Fields!AuctionPrice], 0))
From yourtable

Rules for Regular Identifiers

变量、函数和存储过程的名称必须符合以下 Transact-SQL 标识符规则。

  1. 第一个字符必须是以下之一:

    • 一个由Unicode Standard 3.2定义的字母。字母的 Unicode 定义包括从 a 到 z 的拉丁字符,
      从 A 到 Z,以及其他语言的字母字符。

    • 下划线 (_)、at 符号 (@) 或数字符号 (#)。

标识符开头的某些符号在 SQL 服务器中具有特殊含义。以 at 符号开头的常规标识符始终表示局部变量或参数,不能用作任何其他类型对象的名称。以数字符号开头的标识符表示临时 table 或过程。以双数字符号 (##) 开头的标识符表示全局临时对象。虽然数字符号或双数字符号字符可用于开始其他类型对象的名称,但我们不建议这种做法。

一些 Transact-SQL 函数的名称以双符号 (@@) 开头。为避免与这些函数混淆,您不应使用以 @@.

开头的名称
  1. 后续字符可以包括以下内容:

    • Unicode 标准 3.2 中定义的字母。
    • 来自基本拉丁语或其他国家脚本的小数。
    • at 符号、美元符号 ($)、数字符号、 或下划线。
  2. 标识符不能是 Transact-SQL 保留字。 SQL 服务器保留保留字的大写和小写版本。 Transact-SQL语句中使用标识符时,不符合这些规则的标识符必须用双引号括号分隔.保留的字取决于数据库兼容级别。可以使用 ALTER DATABASE 语句设置此级别。

  3. 不允许
  4. Embedded spacesspecial characters
  5. Supplementary characters 不允许。

identifiers用于Transact-SQL语句时,符合这些规则的标识符必须用double分隔引号括号.

为了使 ssrs 表达式起作用,您忘记在字段后定义 .value

正确的表达方式必须像下面这样

=SUM(IIF(Fields!AuctionPrice.value > 0, Fields!AuctionPrice.value, 0))