sql语句选择列表中,聚合函数如何做除法

exkaede 2007-12-11 11:31:01
select o.ddNumber,sum(d.shoujia) as zongShouJia,sum(d.danjia) as zongDanJia,sum(d.shoujia)/sum(d.danjia) as zk from misorder o
inner join misorderdetail d on o.ddnumber=d.ddnumber
where o.ddNumber<>''
group by o.ddNumber
having (sum(d.shoujia)>0)
order by o.ddNumber desc

---------------------------------------------------
结果如下:

ddNumber zongShouJia zongDanJia zk
6801010662 210072 262580 0
6801010661 92272 115330 0
6801010660 92272 115330 0
6801010659 92272 115330 0
6801010658 92272 92272 1
6801010657 696622 870702 0



为什么除法做完以后,不保留后面的小数?
...全文
1743 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
winstonbonaparte 2007-12-11
  • 打赏
  • 举报
回复
要转换成float型的,要不然就是整除
xxsoft2007 2007-12-11
  • 打赏
  • 举报
回复
cast(sum(d.shoujia)/cast(sum(d.danjia) as float) * 100 as varchar(10)) + '%'
exkaede 2007-12-11
  • 打赏
  • 举报
回复
谢谢,请问如何将算出来的值变成80%,100%,65%等等的形式
xxsoft2007 2007-12-11
  • 打赏
  • 举报
回复
sum(d.shoujia)/ cast(sum(d.danjia) as float) 将除数或被除数类型转成浮点型就行了
青锋-SS 2007-12-11
  • 打赏
  • 举报
回复
select 2/3,2/3.0

----------- ---------------------------------------
0 0.666666

(1 行受影响)

青锋-SS 2007-12-11
  • 打赏
  • 举报
回复
把参与运算的操作数转换成带小数的类型

22,210

社区成员

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

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