SQL 错误 [905] [42000]:ORA-00905:在 oracle 中用例时缺少关键字

SQL Error [905] [42000]: ORA-00905: missing keyword when use case when in oracle

我正在使用 oracle 计算 table

中的某些列

这是我的 LOG0104M table:

PRODUCT_CODE    PRODUCT_NAME   PRODUCT_CAT     TOTAL_QUANTITY     PACKING_STYLE
  112677          AP-1516D         AP               65                  30

我的食谱:

FULLBOX = TOTAL_QUANTITY / PACKING_STYLE
SPARE_QUANTITY = TOTAL_QUANTITY - FULLBOX * PACKING_STYLE

 condition:
   if SPARE_QUANTITY = 0 => SPARE_QUANTITY = 0
   if SPARE_QUANTITY >=1 => SPARE_QUANTITY = 1

我的查询:

SELECT 
 L04.TOTAL_QUANTITY 
 , L04.PRODUCT_CODE 
 , L04.PRODUCT_NAME

 , CASE WHEN 
    SUM(L04.TOTAL_QUANTITY - (L04.TOTAL_QUANTITY / L04.PACKING_STYLE) * L04.PACKING_STYLE) = 0 
 THEN 
    SUM(L04.TOTAL_QUANTITY - (L04.TOTAL_QUANTITY / L04.PACKING_STYLE) * L04.PACKING_STYLE) = 0 
 ELSE
    SUM(L04.TOTAL_QUANTITY - (L04.TOTAL_QUANTITY / L04.PACKING_STYLE) * L04.PACKING_STYLE) >= 1
 THEN 
    SUM(L04.TOTAL_QUANTITY - (L04.TOTAL_QUANTITY / L04.PACKING_STYLE) * L04.PACKING_STYLE) = 1
    END
 END AS SPARE_QUANTITY
 , L04.PRODUCT_CAT 
FROM 
    LOG0104M L04

当我 运行 我的查询时,我得到这个错误:

SQL Error [905] [42000]: ORA-00905: missing keyword

我该如何解决这个问题?非常感谢

您的查询的问题是 ELSE 语句被用作 if/else 您应该在查询中使用 CASE,如下所示:

SELECT L04.TOTAL_QUANTITY 
      ,L04.PRODUCT_CODE 
      ,L04.PRODUCT_NAME
      ,CASE 
          WHEN SUM(L04.TOTAL_QUANTITY - (L04.TOTAL_QUANTITY / L04.PACKING_STYLE) * L04.PACKING_STYLE) = 0  THEN 0
          WHEN SUM(L04.TOTAL_QUANTITY - (L04.TOTAL_QUANTITY / L04.PACKING_STYLE) * L04.PACKING_STYLE) >= 1 THEN 1
          ELSE SUM(L04.TOTAL_QUANTITY - (L04.TOTAL_QUANTITY / L04.PACKING_STYLE) * L04.PACKING_STYLE)
       END AS SPARE_QUANTITY
      ,L04.PRODUCT_CAT 
FROM LOG0104M L04
GROUP BY L04.TOTAL_QUANTITY 
        ,L04.PRODUCT_CODE 
        ,L04.PRODUCT_NAME
        ,L04.PRODUCT_CAT
        ,L04.PACKING_STYLE