【发布时间】:2019-08-02 17:32:36
【问题描述】:
我们的 MIS 提供商向我提供了以下 CASE WHEN 声明。由于我不是专家,我正在考虑简化这一点,所以我越容易阅读,我就越有机会理解和学习。
当前声明:
,CASE SopOrderItem.SoiProcessMethod:WHEN 0
THEN IF SopOrderItem.SoiReplenishmentOrder
THEN DO: IF SopProduct.SopPrePostPaid = 0
THEN ASSIGN lv-ProcessMethod = "Replenishment Pay on Replenishment".
ELSE ASSIGN lv-ProcessMethod = "Replenishment Pay on Delivery".
END.
ELSE lv-processmethod = "Call Off":U.
WHEN 1 THEN lv-processmethod = "On Demand":U.
WHEN 2 THEN lv-processmethod = "Personalised":U.
END CASE
这是我能够写的,我知道我坚持的部分是WHEN SopOrderItem.SoiProcessMethod = 0。在这一点上,我不明白该声明。据我所知,当 SopOrderItem.SoiProcessMethod 为 0 时,检查 SopProduct.SopPrePostPaid 是否也为 0,如果两者都为真,则“补货时付款”,如果不是,则“补货时付款”。
有什么方法可以简化语句,让我更容易理解。
我目前有以下语句,但这导致我的查询失败并需要很长时间才能刷新:
CASE WHEN SopOrderItem.SoiProcessMethod = 1 THEN 'On Demand'
WHEN SopOrderItem.SoiProcessMethod = 2 THEN 'Personalised'
WHEN SopOrderItem.SoiProcessMethod = 0 AND SopProduct.SopPrePostPaid = 0 THEN "Replenishment Pay on Replenishment"
WHEN SopOrderItem.SoiProcessMethod = 0 AND SopProduct.SopPrePostPaid <> 0 THEN "Replenishment Pay on Delivery"
ELSE 'Call Off'
END
【问题讨论】:
标签: sql excel openedge case-when progress-db