紅圈內的函數符號 <>"" 是不等於空值的意思。
也就是計算時抓取欄位內有數值的資料,反則計算結果會失真。
想請問要換成Oracle SQL作計算並排除欄位中若有為0或是空值,則此欄位不加入作計算,請問要怎麼寫才會符合條件?
t3 AS (
SELECT
COALESCE (t2.類別, '總良率') 類別,
ROUND(SUM(t2.投入), 0) 投入,
ROUND ((SUM((t2.成本) * (t2.投入) *ROUND((t2.良率1 * t2.良率2) / 100, 2))) / SUM((t2.成本)* round(t2.投入,2)),2)量產良率--總良率計算公式
FROM t2
GROUP BY ROLLUP (t2.類別))
先暫時提供片段的語法,因為作最終計算的只有這段
謝謝各位
CASE WHEN NVL(M.投入量1,0)=0 THEN 0 ELSE LEAST(M.入庫量1 / M.投入量1 * 100, 100) END 量產1,
以下未測
CASE WHEN NVL(t2.成本,0)*NVL(t2.投入,0)*NVL(t2.良率1,0)*NVL(t2.良率2,0)*NVL(ROUND((t2.良率1 * t2.良率2) / 100, 2),0)*NVL(SUM((t2.成本)* round(t2.投入,2)),0) <> 0
THEN
ROUND ((SUM((t2.成本) * (t2.投入) *ROUND((t2.良率1 * t2.良率2) / 100, 2))) / SUM((t2.成本)* round(t2.投入,2)),2)
ELSE 0 END 量產良率