Oracle中如何计算多列的总和
How to calculate sum of multi column in Oracle
我正在使用 oracle SQL 计算数据库中某些列的值
这是我的 LOG0104M table 值:
PRODUCT_CODE PRODUCT_NAME PACKING_STYLE TOTAL_QUANTITY QUANTITY_IN_FULL_CTN SPAREBOX
3300099 AP-1516D 30 50 1 NULL
3330000 NEOSENSE 60 20 1 NULL
条件:
1. Fullbox = (total_quantity / packing style)
2. SpareBox: (Base on value of Spare_Quantity)
Spare_quantity = total_quantity - fullBox * packing_style.
If spare qty = 0 => spare box = 0
If spare qty > 0 => spare box = 1.
这是我的查询:
WITH BOXCOUNT AS (SELECT ROUND(SUM(TOTAL_QUANTITY/PACKING_STYLE)) AS FULLBOX FROM LOG0104M)
SELECT
L55.PRODUCT_CODE
, L55.PRODUCT_NAME
, L55.TOTAL_QUANTITY
, L55.PACKING_STYLE
, L55.QUANTITY_IN_FULL_CTN
, L55.SPAREBOX
, BC.FULLBOX
,CASE
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) = 0 THEN L55.SPAREBOX = 0
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) != 0 THEN L55.SPAREBOX = 1
END AS SPARE_QUANTITY
FROM LOG0104M L55, BOXCOUNT BC
GROUP BY
L55.PRODUCT_CODE
, L55.PRODUCT_NAME
, L55.TOTAL_QUANTITY
, L55.PACKING_STYLE
, L55.QUANTITY_IN_FULL_CTN
, BC.FULLBOX
, L55.SPAREBOX
(已更新)
在条件 CASE WHEN 中,SPARE_QUANTITY 的总和:
if sum of SPARE_QUANTITY = 0 => SpareBox column will be 0,
and sum of SPARE_QUANTITY != 0 => SpareBox column will be 1
在运行查询时,出现如下错误:
SQL Error [905] [42000]: ORA-00905: missing keyword
好像第12、13、14行出错了,请问如何解决,非常感谢
CASE
表达式中的 THEN
子句不正确:
CASE WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) = 0
THEN L55.SPAREBOX = 0
----------^
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) != 0
THEN L55.SPAREBOX = 1
END AS SPARE_QUANTITY
Oracle 在 SELECT
查询中没有布尔数据类型。
我猜你只是想要:
(CASE WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) = 0
THEN 0
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) <> 0
THEN 1
END) AS SPARE_QUANTITY
或者,如果你想消除 CASE
:
ABS(SIGN(SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE))) AS SPARE_QUANTITY
我正在使用 oracle SQL 计算数据库中某些列的值 这是我的 LOG0104M table 值:
PRODUCT_CODE PRODUCT_NAME PACKING_STYLE TOTAL_QUANTITY QUANTITY_IN_FULL_CTN SPAREBOX
3300099 AP-1516D 30 50 1 NULL
3330000 NEOSENSE 60 20 1 NULL
条件:
1. Fullbox = (total_quantity / packing style)
2. SpareBox: (Base on value of Spare_Quantity)
Spare_quantity = total_quantity - fullBox * packing_style.
If spare qty = 0 => spare box = 0
If spare qty > 0 => spare box = 1.
这是我的查询:
WITH BOXCOUNT AS (SELECT ROUND(SUM(TOTAL_QUANTITY/PACKING_STYLE)) AS FULLBOX FROM LOG0104M)
SELECT
L55.PRODUCT_CODE
, L55.PRODUCT_NAME
, L55.TOTAL_QUANTITY
, L55.PACKING_STYLE
, L55.QUANTITY_IN_FULL_CTN
, L55.SPAREBOX
, BC.FULLBOX
,CASE
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) = 0 THEN L55.SPAREBOX = 0
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) != 0 THEN L55.SPAREBOX = 1
END AS SPARE_QUANTITY
FROM LOG0104M L55, BOXCOUNT BC
GROUP BY
L55.PRODUCT_CODE
, L55.PRODUCT_NAME
, L55.TOTAL_QUANTITY
, L55.PACKING_STYLE
, L55.QUANTITY_IN_FULL_CTN
, BC.FULLBOX
, L55.SPAREBOX
(已更新)
在条件 CASE WHEN 中,SPARE_QUANTITY 的总和:
if sum of SPARE_QUANTITY = 0 => SpareBox column will be 0,
and sum of SPARE_QUANTITY != 0 => SpareBox column will be 1
在运行查询时,出现如下错误:
SQL Error [905] [42000]: ORA-00905: missing keyword
好像第12、13、14行出错了,请问如何解决,非常感谢
CASE
表达式中的 THEN
子句不正确:
CASE WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) = 0
THEN L55.SPAREBOX = 0
----------^
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) != 0
THEN L55.SPAREBOX = 1
END AS SPARE_QUANTITY
Oracle 在 SELECT
查询中没有布尔数据类型。
我猜你只是想要:
(CASE WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) = 0
THEN 0
WHEN SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE) <> 0
THEN 1
END) AS SPARE_QUANTITY
或者,如果你想消除 CASE
:
ABS(SIGN(SUM(L55.TOTAL_QUANTITY - BC.FULLBOX * L55.PACKING_STYLE))) AS SPARE_QUANTITY