我有一個案例查詢,需要重新編寫它以獲得完美結果。當前查詢爲如下:如何編寫嵌套案例查詢並獲得正確結果
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