我有一些来自多维数据集的数据。
我按此顺序排了一行作为替换差异,但是我需要把它放在数量差异桶中。决定它是否为替换的代码在最低级别(这是在一个大的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语句中使用窗口函数?任何人有任何想法我会怎么做?谢谢!
答案 0 :(得分:0)
所以这就是我想出来的。实际上相当简单。正如我在帖子中所说,代码是在CTE中。我单独留下了那段代码,后来在我添加的CTE中
CASE WHEN MC.HasSubstitutionVariance = 1
AND ( COUNT(MC.CostGroupId) OVER ( PARTITION BY MC.ProdId,
MC.CostGroupId,
MC.OprId ) > 1
AND LEFT(MC.CostGroupId, 3) IN ( 'LAB', 'FOH',
'L T', 'F T' )
) THEN 0
ELSE MC.HasSubstitutionVariance
END AS HasSubstitutionVariance ,
其中说的是重复的成本组,它是标准材料,如果是这样,将替换方差标记为0.我认为你不能在CASE语句中使用OVER?或者只是CASE中不能使用的某些窗口函数?