2016-05-17 76 views
1

我有一個SSRS表達式,我正在計算和平均安裝時間,但由於對每個訂單有多個不同的發佈,所以我只需要將獨特訂單的平均安裝時間。由於需要報告的其他部分包括所有過帳,因此我無法將多個訂單過帳分組或過濾掉除此單一表達式以外的任何地方。所以,我有以下表現:在SSRS表達式中分組

=AVG(iif(IsNumeric(Fields!Setup.Value), CDbl(Fields!Setup.Value), 0)) 

而且我基本需要的重寫......僞碼進入上述表達式的語法正確...

=IIf((Fields!Order_Number.Value) is unique), AVG(iif(IsNumeric(Fields!Setup.Value), CDbl(Fields!Setup.Value), 0), else nothing) 

我敢肯定有CountDistinct子句將解決此問題,但我很難找到正確的語法。

+0

你有權編輯數據源的查詢? – StevenWhite

+0

我這樣做,我可以在主要查詢中只篩選唯一的order_number,但我需要報告其他部分的所有單個條目。 –

回答

0

添加一列,以確定每個訂單中的唯一行:

ROW_NUMBER() OVER (PARTITION BY YourOrderID ORDER BY YourOrderID) as RowNumber 

計算字段添加到您的數據集。讓我們把它稱爲「FilteredSetup」:

=IIf(Fields!RowNumber.Value = 1, Fields!Setup.Value, Nothing) 

現在,你可以參考這個新列在您的報告,它會正確地聚合:

=Sum(Fields!FilteredSetup.Value) 
+0

謝謝。那真的很接近。剛剛遇到了關於嘗試對數據類型使用聚合函數的錯誤,該數據類型由於數據存儲爲nvarchar而無效。易於修復: = SUM(iif(IsNumeric(Fields!FilteredSetup.Value),CDbl(Fields!FilteredSetup.Value),0)) –