[英]How to calculate sum of multi column in Oracle
我正在使用 oracle SQL 來計算我數據庫中某個列的值,這是我的 LOG0104M 表,其中包含值:
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
查詢中沒有 Boolean 數據類型。
我猜你只是想要:
(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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.