1 / n至小数点后8位

问题描述 投票:0回答:2

这里是一个公式:

1 / cast(replace(count(usertbl.[name]) over (partition by usertbl.[name], calendar.[Date]), 0, 1) as decimal(2,0)) as [WorkDays]

假定计数分区带回6,因此公式实际上是1/6。目前,它带回了0.17(所以0.17 * 6 = 1.02)。

当我将分区的小数乘以计数时,我想尽可能接近1。因此0.16666667 * 6 = 1.00000002,优于1.02。

如何更改上述公式以达到小数点后8位?我尝试了十进制(10,8),但没有成功。

我不是要减少小数位,而是要增加小数位。

谢谢!

sql sql-server
2个回答
0
投票

如果仅使用它会发生什么?

1.0 / cast(count(*) over (partition by usertbl.[name], calendar.[Date]) as [WorkDays]

我不知道replace()应该做什么。


0
投票

尝试将1强制转换为浮点数或所需的十进制精度,如果您的计数为6,则查询看起来像]

select cast(1.0 as float) / cast(replace(6, 0, 1) as decimal(2,0))

请参阅小提琴

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=d72bf3f3f34dc4a395535da02c0722b9

© www.soinside.com 2019 - 2024. All rights reserved.