我是SQL,SSRS和报表生成器的新手。
我正在尝试比较三个单独的数据集1.毛孔(这是公司收到的所有采购订单和物品)2.护城河(这是在物品级别可用的所有描述性数据)和3.生产(这是一个包含有关项目和用法信息的数据转储,因此它与其他两个数据集有很多重叠。
我首先要做的是创建一个函数,该函数使我可以根据Sku.Value(来自护城河)检查ITEM_ID.Value(来自poreceipts)并返回Series_Desc.Value(来自护城河)。看起来像这样:
=查阅(Fields!ITEM_ID.Value,Fields!Sku.Value,Fields!Series_Desc.Value,“护城河”)
不幸的是,许多项目的Series_Desc字段为空白。那就是第三个数据集的来源。我需要能够检查该值是否为空,如果不是,则返回Series_Desc.Value ...如果为空,那么我需要针对BASE_ITEM查找ITEM_ID.Value。 .Value(来自数据集生产),以返回COATED_ITEM_ID.Value(同样来自数据集生产),然后需要使用该值来查找Sku.Value并返回Series_Desc.Value(来自护城河)。
Ph ...那是满口的,希望它有点清楚。
谢谢大家!
-K
答案 0 :(得分:0)
如果我理解正确,那么您只需要一个数据集,并让数据库服务器为您执行查找。您的数据集查询看起来应该与此类似:
SELECT po.*, ISNULL(m.Series_Desc, m2.Series_Desc) AS Series_Desc
FROM poreceipts po
LEFT OUTER JOIN moat m ON po.ITEM_ID = m.Sku
LEFT OUTER JOIN poreceipts b ON po.BASE_ITEM = b.ITEM_ID
LEFT OUTER JOIN moat m2 ON b.COATED_ITEM_ID = m2.Sku;