2016-11-09 93 views
0

遇到错误Missing keyword出现并在我的第二行查询上突出显示。我试图删除额外的案件,但仍然发生。嵌套CASE中缺少关键字WHEN语句

CASE WHEN NVL(BAT_WK02,0)>=NVL(TARGET_BAT,0) THEN 
    CASE WHEN NVL(RMO_ENTITLED_WK01,0)>0 THEN NVL(SKU_SALES_WK02,0) >= NVL(TARGET_SKU,0) THEN NVL (TARGET_SKU,0) * 1 ELSE NVL(SKU_SALES_WK02,0) *1 
          WHEN NVL(RMO_ENTITLED_WK01,0)=0 THEN NVL(SKU_SALES_WK02,0) >= NVL(TARGET_SKU,0) THEN NVL (TARGET_SKU,0) * 0.50 ELSE NVL (SKU_SALES_WK02) * 0.50 END 
        ELSE 0 END RMO_ENTITLED_SKU_02, 

任何建议,以帮助我吗?

回答

0
CASE WHEN NVL(BAT_WK02,0)>=NVL(TARGET_BAT,0) THEN 
( 
    CASE WHEN NVL(RMO_ENTITLED_WK01,0)>0 THEN NVL(SKU_SALES_WK02,0) >= NVL(TARGET_SKU,0) 
     WHEN <--Here Statement missing--> 
     THEN NVL (TARGET_SKU,0) * 1 ELSE NVL(SKU_SALES_WK02,0) *1 END 
) 
WHEN NVL(RMO_ENTITLED_WK01,0)=0 THEN NVL(SKU_SALES_WK02,0) >= NVL(TARGET_SKU,0) 
WHEN <--Here Statement missing--> 
THEN NVL (TARGET_SKU,0) * 0.50 ELSE NVL (SKU_SALES_WK02) * 0.50 ELSE 0 END 
+0

基本上我有三个要检查的东西,首先如果BAT_WK02大于TARGET_BAT,则继续检查RMO_ENTITLED_WK01是否转到t值(达到wk_01目标)或没有达到wk01目标。如果RMO_ENTITLED_WK01获得价值,则进一步检查SKU_SALES_WK02是否达到最大报销额度,如果是,则使用最大上限值(TARGET_SKU)乘以1,否则使用销售额(SKU_SALES_WK02)* 1;如果RMO_ENTITLED_WK01为0(未达到wk01目标),那么它应该(SKU_SALES_WK02)* 0.50 请让我知道是否需要更多说明,谢谢。 – user2256904

+0

您能否提供一些示例数据和预期输出 – Mansoor

+0

当然。 IF RMO_ENTITLED_WK01 = 5; SALES_CAP = 10; SALES_WK02 = 15 THEN SALES_CAP * 1 IF RM0_ENTITLED_WK01 = 5; SALES_CAP = 20; SALES_WK02 = 15 THEN SALES_WK02 * 1 IF RMO_ENTITLED_WK01 = 0; SALES_CAP = 10; SALES_WK02 = 15 THEN SALES_CAP * 0.5 IF RMO_ENTITLED_WK01 = 0; SALES_CAP = 20; SALES_WK02 = 15 THEN SALES_WK02 * 0.5 希望这有助于! – user2256904

0

我认为你应该在查询中为每个'then'关键字设置一个'when'关键字,你在第2-3行有一个缺少关键字。

CASE WHEN NVL(BAT_WK02,0)> = NVL(TARGET_BAT,0)THEN CASE WHEN NVL(RMO_ENTITLED_WK01,0)> 0 THEN NVL(SKU_SALES_WK02,0)> = NVL(TARGET_SKU,0) THEN NVL(TARGET_SKU,0)* 1 ELSE ...

你有一个嵌套的 '情况下' 的方式,但我想这应该是有