我有一些来自多维数据集的数据。
我在这个订单中有一行作为替代方差输入,但我需要将其放入数量方差桶中。决定是否替换的代码位于最低级别(这是在一个大型 CTE 中)(该多维数据集背后的代码非常庞大并且存在于多个级别)
CASE
WHEN ISNULL(PC.ItemDimCostPrice, SC.ItemDimCostPrice) = 1
AND (PC.ConfigId <> SC.ConfigId
OR PC.InventColorId <> SC.InventColorId
OR PC.InventSizeId <> SC.InventSizeId
OR PC.InventStyleId <> SC.InventStyleId)
THEN 1
--New code here ... THEN 0
WHEN PC.[Resource] IS NULL
OR SC.[Resource] IS NULL
THEN 1
ELSE 0
END AS [HasSubstitutionVariance] ,
他们给我的逻辑基本上是如果成本分组很重要(我知道如何计算)并且存在另一个具有相同 costgroupid 和 operationid 的记录(在生产订单中)那么这将永远不会是替代方差。我正在考虑在 costgroupid 和 operationid 上使用 rownumber 和分区,但据我所知你不能在 case 语句中使用窗口函数?任何人有任何想法我将如何做到这一点?谢谢!
所以这就是我想出的。实际上相当简单。因此,正如我在帖子中所述,代码在 CTE 中。我单独留下了该代码,后来在我添加的 CTE 中
这说明成本组是否重复并且是标准材料,如果是,则将替代方差标记为 0。我认为您不能在 CASE 语句中使用 OVER?还是只有某些窗口函数不能在 CASE 中使用?