Sql server 在rdlc表达式中设置局部变量

Sql server 在rdlc表达式中设置局部变量,sql-server,reporting-services,Sql Server,Reporting Services,是否可以以某种方式以“在线”的方式在rdlc报表表达式中创建变量 例如,我有以下表达式: =IIf(First(Fields!BillingAccount_billtostateprovince.Value, "Invoice") <> "", First(Fields!BillingAccount_billtostateprovince.Value, "Invoice") + " ", "") =IIf(第一个字段!BillingAccount\u billtostatepr

是否可以以某种方式以“在线”的方式在
rdlc
报表表达式中创建变量

例如,我有以下表达式:

=IIf(First(Fields!BillingAccount_billtostateprovince.Value, "Invoice") <> "", 
First(Fields!BillingAccount_billtostateprovince.Value, "Invoice") + " ", 
"")
=IIf(第一个字段!BillingAccount\u billtostateprovince.Value,“发票”)“”,
首先(字段!BillingAccount\u billtostateprovince.Value,“发票”)+“”,
"")

我假设我首先计算以下表达式
(Fields!BillingAccount\u billtostateprovince.Value,“Invoice”)
两次。我不喜欢它,它看起来很丑。。。我更愿意在当前表达式的范围内创建变量并使用它


有可能吗?

正如用户3056839所说,欢迎使用SSRS

无论如何,你想要的是不可能的,因为你现在写的不是一个脚本,而是一个表达式。它是一条返回值的语句,因此不能声明变量、使用循环或脚本的任何部分

你必须准确地使用你正在写的东西

而且像你这样的IIF表达也不少见。我经常看到的是IFF(不为NULL,'N/A')。该字段实际上可能会计算两次,但您无能为力。这很难看,但这是你唯一能做到的

只要考虑一下WHEN子句的情况:

SELECT 
CASE WHEN MyField IS NOT NULL THEN
   MyField ELSE 0
END

您要对字段进行两次评估,但您无能为力:)

在SQL Server 2008及更高版本中可以进行评估。您可以创建一个
报告变量
,该变量可以通过您的报告进行访问


参考资料:

“我不喜欢它,它看起来很丑”-欢迎来到SSRS!我认为没有办法避免这种情况。您可能会将字段值传递给后面的代码,然后检索它,但这只会稍微减少字符数,并增加一个额外的层。