2015-11-05 27 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