我有一个案例查询,需要重新编写它以获得完美结果。当前查询为如下:如何编写嵌套案例查询并获得正确结果
CASE
WHEN MonthsRetrieved <= 6 AND MonthsRetrieved > 0 THEN
CASE
WHEN MonthsSinceLastReceipt <= 6 THEN 'Fast'
WHEN MonthsSinceLastReceipt > 6 AND MonthsSinceLastReceipt <= 12 THEN 'Slow'
WHEN MonthsSinceLastReceipt > 12 AND MonthsSinceLastReceipt <= 18 THEN 'Very Slow'
WHEN MonthsSinceLastReceipt > 18 THEN 'Dead'
WHEN OpeningQty = 0 THEN 'New Items'
WHEN QtyIssued = 0 THEN 'Non-Moving'
ELSE 'Fast'
END
WHEN MonthsRetrieved > 6 AND MonthsRetrieved <= 12 THEN
CASE
WHEN MonthsRetrieved <= 12 THEN 'Slow'
WHEN MonthsSinceLastReceipt > 12 AND MonthsSinceLastReceipt <= 18 THEN 'Very Slow'
WHEN MonthsSinceLastReceipt > 18 THEN 'Dead'
WHEN OpeningQty = 0 THEN 'New Items'
WHEN QtyIssued = 0 THEN 'Non-Moving'
ELSE 'Slow'
END
WHEN MonthsRetrieved > 12 AND MonthsRetrieved <= 18 THEN
CASE
WHEN MonthsSinceLastReceipt <= 18 THEN 'Very Slow'
WHEN MonthsSinceLastReceipt > 18 THEN 'Dead'
WHEN OpeningQty = 0 THEN 'New Items'
WHEN QtyIssued = 0 THEN 'Non-Moving'
ELSE 'Very Slow'
END
WHEN MonthsRetrieved = 0 THEN
CASE
WHEN MonthsSinceLastReceipt = 0 THEN 'Dead'
WHEN OpeningQty = 0 THEN 'New Items'
WHEN QtyIssued = 0 THEN 'Non-Moving'
ELSE 'Dead'
END
WHEN MonthsRetrieved > 18 THEN
CASE
WHEN MonthsSinceLastReceipt > 18 THEN 'Dead'
WHEN OpeningQty = 0 THEN 'New Items'
WHEN QtyIssued = 0 THEN 'Non-Moving'
ELSE 'Dead'
END
END
我从一个公式得到一个值个月,它是在MonthsRetrieved
。 月份的另一个值是MonthsSinceLastReceipt
,这是自上次收货日期以来的月份。 OpeningQty
是特定日期的开始数量。 QtyIssued
是两个日期之间发出的数量。
该项目正在分为快,慢,非常慢,死,新项目,非移动。 case语句是针对每个分类嵌套的。我得到的结果,但他们不正确。我相信我在声明中忽略了一些东西。
你会得到什么结果以及它们为什么不正确?你能添加样本数据和预期结果吗? – HoneyBadger
制作一张限量表。加入。一旦遇到。 – jarlh
我看到的一件事是:'when openqty = 0 then'New Items'' - 当开始数量为0时,不应该是所有情况下的分类吗?你写它的方式,它不会是所有情况下,但只有当其他“WHEN”条件失败时。 “不移动”也一样。 – mathguy