現在有如下資料
行號 收入
1 1111
2 2222
3 3333
4 4444
5 5555
6 6666
合計 23331
現有差異500,然后差異金額除以收入總額算出系數,再拿收入金額* 系數,結果要保留兩位,最后差異合計比實際多0.01 ,請問這個0.01改如何處理,如何能分配到最后一行,通過陳述句的方式
行號 收入 分攤系數 分攤金額
1 1111 0.021430715 23.81
2 2222 0.021430715 47.62
3 3333 0.021430715 71.43
4 4444 0.021430715 95.24
5 5555 0.021430715 119.05
6 6666 0.021430715 142.86
合計 23331 500.01
uj5u.com熱心網友回復:
你的意思是分攤金額的和與差異值的差加到最后一個行號的分攤金額上?uj5u.com熱心網友回復:
直接update, 抓取金額最大行的ROWID,以此為條件updateuj5u.com熱心網友回復:
首先把想清楚把這個差異的資料放在哪一條記錄上來處理,是行號最大的還是金額最大的等等,想好了規則就好處理了。比如你準備放在最后一行處理,那就先匯總前面5條資料的金額,然后用總數 500 去級訓總金額就得到了最后一條資料
的分攤金額了。
uj5u.com熱心網友回復:
我想用row_number() over函式,但是我如何獲取最大的行號,金額最大行有可能有相同的uj5u.com熱心網友回復:
還有rank和dense_rankuj5u.com熱心網友回復:
row_number() over是個排序的序號,over()里面可以用order desc排序,然后取排序第一位的就行uj5u.com熱心網友回復:
你的意思是sql回傳的結果,比正確的值,有0.01的偏差,對嗎。如果是這樣,請把資料庫里存數字的欄位型別,無論是金額,還是其它,只要存數字的欄位型別,統統換成DECIMAL型別。
uj5u.com熱心網友回復:
話是好說,請放馬
uj5u.com熱心網友回復:
共 N行,最后一行的數值,可以為 500 - SUM(N1+ N2+ 。。。。 N(N-1))轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/32983.html
標籤:開發
上一篇:oracle xmlquery
下一篇:Oracle定時執行存盤程序
