2013-01-20 1 views
0

대략 200 개 이상의 행을 반환하는 보고서와 특정 유형의 총 수량 (즉, 인벤토리에있는 젤리 빈 수)을 계산해야하는 함수를 사용하려는 열 중 하나에 대한 보고서가 있습니다. 현재 그룹 열 속성에 대해서만이 함수를 실행할 수 있도록 SQL이나 함수 또는 저장 프로 시저를 특정 셀/텍스트 상자 내에서 호출 할 수있는 방법이 있습니까?테이블 릭스 그룹의 총 행에서 함수를 호출하는 방법은 무엇입니까?

이 함수는 한 번 실행하는 데 약 3 초가 걸립니다. 그러나 보고서 본문에 사용되는 저장 프로 시저에서이 저장 프로 시저를 사용하면 저장 프로 시저가 데이터베이스의 특정 테이블 (27000 + 레코드)의 각 레코드에 대한 함수를 실행하기 때문에 약 3 분이 걸립니다.

+1

문제를 설명하는 예제 쿼리를 제공 할 수 있습니까? 그것은 쿼리에서 간단한 ['CASE'] (http://msdn.microsoft.com/en-us/library/ms181765.aspx) 문을 사용해야한다고 생각하십니까? 대안 : [SSRS 표현식] (http://msdn.microsoft.com/en-us/library/ms157328.aspx#ReportFunctions)을 사용하여 시도해 보셨습니까? – Jeroen

+0

식 내부에서 SQL 쿼리를 실행할 수 있습니까? 몇 가지 표현식을 사용했지만 매개 변수 값이나 데이터 집합 필드 만 출력했습니다. – Keith

+0

내가 아직 링크 된 MSDN 페이지를 읽었습니까? 표현이 무엇인지, 그리고 무엇을 할 수 있는지 자세히 설명합니다. – Jeroen

답변

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 
관련 문제