2011-03-17 11 views
2

보고서의 요약 행에서 평균을 계산할 때 오류가 발생합니다. 내 표현은 다음과 같습니다보고 서비스식이 일부 상황에서 오류를 발생시킵니다.

8311 87 0 0 
8311 41 0 0 
8311 80 0 0 
8311 136 1 136 

아이디어는 해당 열 3 : 데이터를 다음과 같이 보입니다 때

=IIF(SUM(Fields!column3.Value) > 0, Format(DateAdd("s", (SUM(Fields!column4.Value)/SUM(Fields!column3.Value)), "00:00:00"), "HH:mm:ss"), "-") 

(슈퍼 긴 줄 죄송합니다)

표현이 잘 작동 열 2가 120을 초과하면 1, 그렇지 않으면 0입니다. 열 4는 열 2가 120보다 큰 경우에만 0보다 큰 값을 가지며,이 경우 열 2와 동일한 값입니다.이 방법으로 요약 보고 서비스에서이 그룹의 라인, 나는 grea 인 행의 총 수를 결정할 수 있습니다. 120 세 이상 (3 열에 SUM 사용). 같은 방법으로 열 2의 값의 총 개수를 결정할 수 있습니다.이 값은 열 4를 합하여 120보다 큽니다. 거기에서 열 4를 열 3으로 나누어 열 2의 평균을 결정해야합니다 120보다 큰 값.

평균을 얻으면 시간 문자열 (예 : "00:02:16")로 변환하고 싶습니다. 그룹에 120 이상의 열 2 값이없는 경우 "-"를 표시하려고합니다.

이 논리는 열 2의 값이 120을 초과하는 경우에 효과가있는 것으로 나타났습니다. 그러나 난이 영으로 나누기 오류가 있음을 가정하고 리포트를 실행할 때

8310 108 0 0 

식이 무서워 # 오류 결과를 제공하므로 I는 상기 IIF 던져 :. 컬럼 3 및 4는 다음과 같이 0이다 표현식이 평균 계산에서 분모가> 0인지 확인합니다.

슬프게도 #Error는 3과 4 열에 0이있는 그룹에 대해 계속 적용됩니다. 무엇이 누락 되었습니까?

답변

4

SSRS의 iif는 Visual Basic IIF와 동일합니다. 모든 분기를 평가하고 오류가있는 부분이 있으면 전체 함수에서 오류가 발생합니다.

두 가지 일반적인 작업 차선책 : 보고서에

  • 를 사용하여 임베디드 코드,
  • 이제까지 0으로 나누는 함수를 저장하는 두 번째 IIF를 사용합니다.

두 번째 옵션 : 바꾸기 :

=IIF(SUM(Fields!column3.Value) > 0, Format(DateAdd("s", (SUM(Fields!column4.Value)/SUM(Fields!column3.Value)), "00:00:00"), "HH:mm:ss"), "-") 

=IIF(SUM(Fields!column3.Value) > 0, Format(DateAdd("s", (SUM(Fields!column4.Value)/IIF(SUM(Fields!column3.Value)>0,SUM(Fields!column3.Value),1)), "00:00:00"), "HH:mm:ss"), "-") 

와 내장의

많은 예 (내가 괄호의 오른쪽 수 ... 거 같아요) 0으로 나누기를 처리하는 코드도 여기에 있습니다. http://social.msdn.microsoft.com/Forums/is/sqlreportingservices/thread/b8e0730b-da60-49a8-8613-2309ff1a2c90

+0

그건 트릭을 ... 고마워! – seanicus

관련 문제