如何调用tablix组总行中的函数?

时间:2013-01-20 04:31:48

标签: ssrs-2008 reporting-services ssrs-tablix

我有一个报告返回大约200多行,并且在我计划使用的函数之一的一个列上,我必须计算一个给定类型的总量(即库存中有多少果冻豆)。有没有办法让我在特定的单元格/文本框中执行SQL或调用函数或存储过程,这样我才能只为当前的组列属性执行此函数?

此功能大约需要3秒钟才能执行一次。但是,如果我在用于报表正文的存储过程中使用它,则存储过程大约需要3分钟,因为它正在为数据库的特定表(27000+条记录)中的每条记录执行该函数。

1 个答案:

答案 0 :(得分:0)

数据集正文中的标量函数应该可以正常工作。这比花时间在SSRS中创建函数要容易得多,或者因为底层的SQL会完成所有工作并且可能更快地返回数据。除非您必须将两个不同的数据集关联起来,否则您可能必须使用自定义表达式。尽管如此,我倾向于在数据集中完成大部分数学计算。您在SSRS中使用的表达式越多,报告的速度就越慢。

如果我创建一个简单的数据库,一个简单的表,并有一个标量函数(例如简单):

use test-- database I created for concepts

create table Person ( id int identity, person varchar(64), orders int );

insert into Person values ('Brett',10),('Brett',20),('John',10)
GO

create function dbo.tester ( @intputint int )

returns int

as 

begin

declare @return int 


select @return = @intputint * 10

return @return

end
GO

当我在SQL Server 2008中执行此操作时,我应该能够使用该标量函数的列:

select *, dbo.tester(orders) as OrdersTimesTen
from Person