sum中取两位小数的问题?

xin20080520 2008-06-20 11:20:27
字段 ID, Num1 , Num2
数据 1, 11.11 , 22.22
2, 5.55 , 6.66
3, 6.66 , 7.77

我需要的结果 (11.11 * 22.22 (取两位小数)) + (5.55 * 6.66 (取两位小数)) + (6.66 * 7.77 (取两位小数))

说明: 取两位小数, 一定要在做加法之前

我目前做到了这一步 select sum(Num1 * Num2) as TotalNum

哪位能帮我完善一下呢? 谢谢
...全文
262 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Herb2 2008-06-20
  • 打赏
  • 举报
回复
select sum(round(Num1 * Num2,2)) as TotalNum 
DalyQiao 2008-06-20
  • 打赏
  • 举报
回复
用数据库中的Round函数不行么
lff642 2008-06-20
  • 打赏
  • 举报
回复
decimal 和 numeric
带定点精度和小数位数的 numeric 数据类型。

decimal[(p[, s])] 和 numeric[(p[, s])]

定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。

p(精度)

指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。

s(小数位数)

指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化。

lff642 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xin20080520 的回复:]
引用 1 楼 liangCK 的回复:
select sum(convert(decimal(19,2),Num1 * Num2)) as TotalNum


请教: decimal() 这里面的参数, 您是在哪里查到的呢? 我在网上搜了半天, 也没有说明.
[/Quote]

这个你应该看权威的联机丛书
x_ch 2008-06-20
  • 打赏
  • 举报
回复
decimal(18,2)
xin20080520 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
select sum(convert(decimal(19,2),Num1 * Num2)) as TotalNum
[/Quote]

请教: decimal() 这里面的参数, 您是在哪里查到的呢? 我在网上搜了半天, 也没有说明.
nzperfect 2008-06-20
  • 打赏
  • 举报
回复
create table #T (ID int,Num1 numeric(4,2),Num2 numeric(4,2))
insert into #T
select 1,11.11,22.22 union all
select 2,5.55,6.66 union all
select 3,6.66,7.77

select sum(cast(num1*num2 as numeric(18,2))) from #T
/*
335.57
*/

select sum(sm) from(select * ,(cast(num1*num2 as numeric(18,2)))as sm from #T) as a
/*
335.57
*/
liangCK 2008-06-20
  • 打赏
  • 举报
回复
select sum(convert(decimal(19,2),Num1 * Num2)) as TotalNum

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧