2015-11-05 70 views
0

我想使用多值參數過濾在字段中返回的數據。我需要篩選基於3個條件:SSRS在使用IN的字段中的表達式

--Before一個保修結束日期上的記錄必須匹配由用戶選擇的多值參數中的一個

--and服務類別

- -AND記錄中的訂單類型必須與用戶選擇的其中一個多值參數相匹配

目前,這適用於我上面描述的第一個選擇(僅彙總那些記錄與服務日期< =保修結束日期,但是,我無法獲得語法來根據參數檢查另外兩個字段...

Sum(iif(Fields!FirstServiceDate.Value <= Fields!WarrantyEndDate.Value, CDbl(Fields!ExtendedCost.Value), CDbl(0))) 

附加是我的佈局。最後,我想最初顯示一切的%的剩餘左側,讓用戶能夠深入地看發票明細 warranty

回答

0

我不知道你有什麼理由使用參數,而不是篩選過濾的數據集你的查詢直接。但是,這可能是你正在尋找的。基於OP評論版:

試試這個:

=Sum(iif(
Fields!FirstServiceDate.Value <= Fields!WarrantyEndDate.Value 
AND 
Join(Parameters!MultiValSTParam.Value,",").Contains(Fields!ServiceType.Value) 
AND 
Join(Parameters!MultiValOTParam.Value,",").Contains(Fields!OrderType.Value) 
,CDbl(Fields!ExtendedCost.Value) 
,CDbl(0) 
)) 

編輯

您應該使用該參數來過濾在T-SQL級別生成數據集的查詢。

創建@WarrantyEDParam(日期類型),@ServiceType@OderType參數,然後在類似這樣的查詢一些使用它們。

select 
    me.equipment_id, 
    me.WarrantyEndDate, 
    me.WarrantyReserveAmnt, 
    so.invoice_id, 
    so.service_type, 
    so.order_type, 
    so.cost, 
    so.price 
from 
master_equipment me 
left join sales_order so on me.equipment_id = so.equipment_id 
where me.WarrantyEndDate <= @WarrantyEDParam 
or so.equipment_id is null  --This line was added 
and so.service_type in (@ServiceTypeParam) 
and so.order_type in (@OrderTypeParam) 

現在你會得到直接從查詢過濾後的數據,因此要獲得的ExtendedCost使用的總和:

=Sum(CDbl(Fields!ExtendedCost.Value)) 
+0

是。也許這是錯誤的方法,因爲這似乎並不奏效,但也許你可以提供幫助。我正在嘗試過濾字段,因爲這種情況... – Liz

+0

編輯您的問題以包含參數的類型和名稱以及您正在使用的查詢。 –

+0

我有一臺設備主,每臺設備有一個記錄#,我需要以下字段。設備#,保修結束日期和保修儲備金。這總是每個裝備一個記錄,我需要在用戶指定的保修日期範圍內顯示所有裝備記錄。然後,我需要從銷售訂單表中提取數據,該表中有多個記錄,即發票編號,服務類型,訂單類型,設備編號,成本和價格。此數據(成本)需要彙總以計算已使用質量保證金字段,然後我需要採取(保修儲備金使用的保修)=剩餘金額。 – Liz