我正在尝试使用多值参数过滤字段中返回的数据。我需要根据3个条件进行过滤:
- 保修结束日期之前
- 记录上的AND服务类型必须与用户选择的MULTI-VALUE参数之一匹配
- 记录中的AND Order Type必须与用户选择的MULTI-VALUE参数之一匹配
目前,这适用于我上面描述的第一个选择(仅对那些具有服务日期< =保修结束日期的记录求和,但是,我无法获得语法以根据所选参数检查其他2个字段...
Sum(iif(Fields!FirstServiceDate.Value <= Fields!WarrantyEndDate.Value, CDbl(Fields!ExtendedCost.Value), CDbl(0)))
附件是我的布局。最后,我想首先显示剩余%左侧的所有内容,并允许用户深入查看发票详细信息 warranty
答案 0 :(得分:0)
我不知道您使用参数过滤数据集的原因是什么,而不是直接过滤您的查询。然而,这可能是你正在寻找的。 p>
试试这个:
=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)
))
编辑:基于OP评论的版本。
您应该使用该参数来过滤在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))