带行分组的SSRS LOOKUP

时间:2016-07-13 09:31:59

标签: sql reporting-services ssrs-2008-r2 ssrs-2012 ssrs-tablix

我正在尝试向使用不同数据集的tablix添加一列。现在 dataset1 包含新数据, dataset2 包含旧的比较数据。

Tablix正在使用 dataset1 ,有问题的行按D_ID分组,现在我添加了一个需要与D_ID(dataset1)绑定到D_ID(dataset2)的列

=-1*sum(Lookup(Fields!D_ID.Value, Fields!D_ID.Value, Fields!BUD_OLD.Value, "OLD")+Lookup(Fields!D_ID.Value, Fields!D_ID.Value, Fields!ACK_BUD_OLD.Value, "OLD"))

但是,考虑到我需要的是BUD_OLD中的所有行,D_ID = smth要汇总在一起。查找仅返回一个值,而不是具有D_ID的所有值的总和。

实施例

D_ID        SUM(BUD_NEW+ACK_BUD_NEW)           SUM(BUD_OLD+ACK_BUD_OLD)         
**100**           **75**  (40+35)                    **15**(SHOULD BE 15+20=35) 

我怎样才能得到这笔钱?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

LOOKUP 只获得一个值。

您需要使用LOOKUPSET和一个特殊功能来 SUM 结果。

幸运的是,这已经完成了。

SSRS Groups, Aggregated Group after detailed ones

来自BIDS:

  

LOOKUP :使用Lookup从指定数据集中检索存在1对1关系的名称 - 值对的值。   例如,对于表中的ID字段,可以使用Lookup   从未绑定的数据集中检索相应的名称字段   到数据区域。

     

<强> LOOKUPSET :使用LookupSet为检索一组从一个名称 - 值对所述特定数据组的值的地方有一个1对多   关系。例如,对于表中的客户标识符,您   可以使用LookupSet检索所有相关电话号码   该客户来自未绑定到数据区域的数据集。

答案 1 :(得分:0)

你的表达需要第二个“总和”

尝试以下方法:

-1 * sum(Lookup(Fields!D_ID.Value,Fields!D_ID.Value,Fields!BUD_OLD.Value,“OLD”)+ SUM(Lookup(Fields!D_ID.Value,Fields!D_ID.Value,Fields !ACK_BUD_OLD.Value,“OLD”)