2015-12-09 131 views
1

我不能工作了,爲什麼這些總表達式不工作...SSRS計數或總和表達

我想補充一點,後來有個約會比現在的任何細胞,與有「不REQD任何細胞「,然後除以行數,得到一個百分比。

我得到的全部是#Error

這是我試過的表達式:

=SUM(IIf(Fields!Jetter_Trng.Value >Today OR 
Fields!Jetter_Trng.Value = "Not Reqd",1,0)))/(Count(Fields!Jetter_Trng.Value) 

=Count(IIf(Fields!Jetter_Trng.Value >Today OR 
Fields!Jetter_Trng.Value = "Not Reqd",1,Nothing)))/(Count(Fields!Jetter_Trng.Value) 

「未REQD」 字符串都來自改變日期的表達式(1950年1月1日)到「不需要」。也許這是搞亂事情:

=iif(Fields!Jetter_Trng.Value = "01/01/1950", "Not Reqd", Fields!Jetter_Trng.Value) 

當前的工作表現(不找 「不REQD」)是:

=COUNT(IIF(Fields!Jetter_Trng.Value>Today,1,Nothing)))/(Count(Fields!Name.Value)) 

我有點失落......

+1

是什麼領域的'數據類型!Jetter_Trng.Value'作爲第一表達你使用它作爲一個日期,一個字符串評估此數據集和一個數字都在同一時間 – Jonnus

回答

0

一夫婦對你表達的筆記,因爲它代表目前

  • Jetter_Trng似乎是代表一個字符串日期或「不需要」。沒有他們鑄造日期類型首先使用CDATE()

  • 你不能比較字符串日期括號(())的數量不匹配

雖然你的問題的根源是您使用Jetter_Trng返回日期或值「不需要」。

當SSRS試圖評估一個表達式時,它會在同一時間完成所有操作。它不遵循尋找答案的路徑,而忽略其他路徑。因此,當您試圖比較

Fields!Jetter_Trng.Value >Today 

這是一個比較字符串和日期,並引發錯誤,因爲這意味着什麼

"Not Reqd" > Today 

你將不能夠做的一切你只想使用一個字段類型的字符串。

你的選擇是

  • 使用兩個領域 - 日期和標誌,表示不需要,或
  • 使用一個領域 - 但有一個「無效的日期」(2100年1月1日也許)你可以再當作「未REQD」值,並檢查當前的日期小於(它總是會)

使用第二個選項,在這裏你那麼可以使用下面的表達式來創建期望的計算

=sum(iif(CDate(Fields!Jetter_Trng.Value) > Today, 1, 0))/
Count(Fields!Jetter_Trng.Value) 

這將如下

enter image description here

+0

嘿喬尼斯 - 這是一個全面的答覆 - 我非常感謝它。那些討厭的大括號 - 我會在稍後看看。我已經帶頭了 - 我已經有了一個「無效日期」,因爲我用表達式將1/1/50更改爲「未請求」。這個 - 正如你所說 - 沒有工作,因爲我混合日期和字符串。所以我已經回到離開無效日期,使用你的表達,它的工作原理。感謝您向我展示 - 我感到非常困惑和煩惱! – ttratl