我是SQL、SSRS和Report Builder的新手。
我正在尝试比较三个独立的数据集: 1. poreceipts (这是公司收到的所有采购订单和项目) 2. moat (这是在项目级别可用的所有描述性数据)和3. production (这是一个数据转储,其中包含有关项目和用途的信息,因此它与其他两个数据集有相当多的重叠)。
我首先需要做的是创建一个函数,让我检查ITEM_ID.Value (来自poreceipts)和Sku.Value (来自护城河),并返回Series_Desc.Value (来自护城河)。它看起来像这样:
=查找(字段!ITEM_ID.Value,字段!Sku.Value,字段!Series_Desc.Value,“护城河”)
不幸的是,许多项目的Series_Desc字段是空的。这就是第三个数据集的用武之地。我需要能够检查值是否为空,如果不为空,则返回Series_Desc.Value...如果它为空,那么我需要根据BASE_ITEM.Value (来自dataset production)查找ITEM_ID.Value,以便返回COATED_ITEM_ID.Value (同样来自dataset production),然后需要使用它来查找Sku.Value并返回Series_Desc.Value (来自护城河)。
嘿嘿。这是一张很长的嘴巴,希望它有点清晰。
提前感谢大家!
-K
发布于 2018-07-15 21:59:17
如果我没理解错的话,那么您只需要一个数据集,让数据库服务器为您执行查找。您的数据集的查询应与以下内容类似:
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;https://stackoverflow.com/questions/51158172
复制相似问题