所以我有一个表从程序中获取结果集,一切看起来都很棒,包括底部的总数。用户要求底部的一些自定义行仅表示特定条件或组的总计。假设您有一个名为AuctionPrice的字段。在数据集中,它来自sql过程中的聚合。
如果我在表格的底部和“AuctionPrice”字段中添加一行,我会使用这样的表达式 = SUM(IIF(Fields!AuctionPrice> 0,Fields!AuctionPrice,0))
这会产生错误,而在比较中使用不同字段的表达式可以正常工作。
您是否真的不能使用已包含在数据集中的聚合(总和)中的字段的表达式?
答案 0 :(得分:1)
要使ssrs表达式起作用,您忘记在字段
之后定义.value正确的表达式必须与下面的表达式相同
=SUM(IIF(Fields!AuctionPrice.value > 0, Fields!AuctionPrice.value, 0))
答案 1 :(得分:0)
这是因为Fields!AuctionPrice
列中包含特殊字符(!)
。你需要使用方括号
select SUM(IIF([Fields!AuctionPrice] > 0, [Fields!AuctionPrice], 0))
From yourtable
变量,函数和存储过程的名称必须符合以下Transact-SQL标识符规则。
第一个字符必须是以下之一:
Unicode Standard 3.2
定义的字母。字母的Unicode定义包括从a到z的
拉丁字符,
从A到Z,还有其他语言的字母。
下划线(_
),符号(@
)或数字符号(#
)。
标识符开头的某些符号在SQL Server中具有特殊含义。以at符号开头的常规标识符始终表示局部变量或参数,不能用作任何其他类型对象的名称。以数字符号开头的标识符表示临时表或过程。以双数字符号(##)开头的标识符表示全局临时对象。虽然数字符号或双数字符号可用于开始其他类型对象的名称,但我们不建议这样做。
某些Transact-SQL函数的名称在符号(@@
)处以double开头。为避免与这些函数混淆,不应使用以@@
开头的名称。
后续字符可包含以下内容:
$
),数字符号,
或者下划线。标识符不能是Transact-SQL保留字。 SQL Server保留保留字的大写和小写版本。在Transact-SQL语句中使用标识符时,不符合这些规则的标识符必须由双引号或括号分隔。保留的单词取决于数据库兼容级别。可以使用ALTER DATABASE
语句设置此级别。
Embedded spaces
或special characters
是不允许的。Supplementary characters
是不允许的。在Transact-SQL语句中使用identifiers
时,不符合这些规则的标识符必须由双引号或括号强>