2016-11-09 7 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 максимальному возмещению, если да, используйте умножитель max (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» в вашем запросе, у вас один отсутствует в строке 2-3.

случай, когда NVL (BAT_WK02,0)> = NVL (TARGET_BAT, 0) ТОГДА ПРИМЕР, КОГДА NVL (RMO_ENTITLED_WK01,0)> 0 ТОГДА NVL (SKU_SALES_WK02,0)> = NVL (TARGET_SKU, 0) ТОГДА NVL (TARGET_SKU, 0) * 1 ELSE ...

Вы вложенную «случай, когда» по пути, но я думаю, что должен был быть там