我有資料如下
id typeid num
0001 01 10.20
0001 02 10.40
0001 03 10.40
0002 01 20.00
0002 02 10.00
0003 03 20.50
0003 04 10.50
如何判斷將每個id 有小資料取整,要求是typeid最大的餘數全部彙總到此資料,要求結果如下
id typeid num
0001 01 10.00
0001 02 10.00
0001 03 11.00
0002 01 20.00
0002 02 10.00
0003 03 20.00
0003 04 11.00
--方法
--ken wong
--測試資料
create
table
tb (id
varchar(4
),typeid
varchar(2
),num
dec(4,
2))insert
into
tbselect
'0001',
'01',
10.20
union
allselect
'0001',
'02',
10.40
union
allselect
'0001',
'03',
10.40
union
allselect
'0002',
'01',
20.00
union
allselect
'0002',
'02',
10.00
union
allselect
'0003',
'03',
20.50
union
allselect
'0003',
'04',
10.50
--執行
update
tb set
num
=case
when
typeid =(
select
max(typeid)
from
tb where
t.id
=id)
then
cast
(cast
(tb.num
asint
) as
dec(4,
2))
+t.餘數
else
cast
(cast
(tb.num
asint
) as
dec(4,
2))
endfrom
tb ,(
select
id,sum
(num
-cast
(cast
(num
asint
) as
dec(4,
2)))
as餘數
from
tb group
byid) t
where
tb.id
=t.id
--and typeid = (select max(typeid) from tb where t.id = id)
select
*from
tbdrop
table
tb--
結果0001
0110.00
0001
0210.00
0001
0311.00
0002
0120.00
0002
0210.00
0003
0320.00
0003
0411.00
c 小數取整
向上取整 math.ceiling 1 1 math.ceiling 1.1 2 math.ceiling 1.5 2 向下取整 math.float 1 1 math.float 1.1 1 math.float 1.5 1 c 取整函式例項應用詳解 c 取整函式的相關使用是我們在實際開發應用中經...
小數取整的方式
static double ceil double a 天花板函式,返回大於等於a的最小整數 但是以浮點數形式儲存 static double floor double a 地板函式,返回小於等於a的最大整數 但是以浮點數形式儲存 static double rint double a 四捨五入函式...
js中小數取整
以前我習慣性使用parseint做取整,後來發現乙個問題,對科學計數法不適用 js取整的方法 1.parseint parseint把小數轉化成整數是從要取整數據的左邊讀取,遇到非數字結束,保留前面已讀到的數字。當我們遇到科學計數法,使用parse取值可能是錯誤的 大部分來說是錯誤的 2.math ...