iT邦幫忙

0

請問要將EXCEL的 SUMPRODUCT 函數公式轉換成Oracle SQL語法作計算的寫法?

  • 分享至 

  • xImage

紅圈內的函數符號 <>"" 是不等於空值的意思。
也就是計算時抓取欄位內有數值的資料,反則計算結果會失真。
圖片1

想請問要換成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.類別))

先暫時提供片段的語法,因為作最終計算的只有這段

謝謝各位

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
rogeryao
iT邦超人 8 級 ‧ 2021-11-11 10:20:44
最佳解答

請參閱 : 如何將SQL直行欄位加總完並放在指定欄位?

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 量產良率

謝謝你還特地寫範例,這段語法我有測試過了,還需要再修改,我再慢慢修正

我要發表回答

立即登入回答