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
我正在使用 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