我正在报表生成器中构建报表。我有2个数据集,由于它们的复杂性,它们无法合并。我想做的是做一个报告,它使用第一个数据集中的ID来查找第二个数据集中的数据。这可能吗?以下是示例,不是确切的代码,而是我需要的:
First Dataset:
select itemID from Items
第二个数据集:
select itemID, saleAmount, salePrice from Sales
我想像这样设置我的报告:
ItemID | Sale Count | Sale Price
--------------+-------------------------------------------------------------+------------
Items.itemID | sum(Sales.saleAmount) where items.itemID = Sales.itemID | sum(Sales.salePrice ) where items.itemID = Sales.itemID
所以最终结果将是这样的:
ItemID | Sale Count | Sale Price
--------------+-------------------------------------------------------------+------------
1 | 11223 | $123123
2 | 4537 | $8375
这可能吗?也许有条件查找?
答案 0 :(得分:1)
在创建数据集时,您无法加入数据,这是一种遗憾。
如果做不到这一点,我可以考虑其他两个选择:
使用LookupSet和自定义代码
这个出色的答案How to combine aggregates within a group with aggregates across groups within SSRS就是如何做到这一点的完美例子。
基本上,您在函数(例如SumLookup
)中添加自定义代码,该函数接受LookupSet调用的结果并返回聚合值。您的报告中包含以下表达式:
=Code.SumLookup(
LookupSet(Fields!itemID.Value, Fields!itemID.Value, Fields!saleAmount.Value, "Sales")
)
我创建了一个快速测试,它运行得很好。
使用子报告
要执行此操作,您需要根据项目数据集创建表格,然后在详细信息行中嵌入子报表以显示销售信息。
子报表需要itemID
参数来适当地过滤销售,您可以将父表设置为将=Fields!itemID.Value
传递给子报表 - 然后对每个itemID
行重复一次显示相关的销售数据。
对于它的价值,我会看第一个选项 - 有一些自定义代码,但它很简单,这样你就不需要部署多个报告了。对我来说似乎更干净。