将货币值(欧分)四舍五入转换为欧元



应用程序将数据导出到我的DWH欧分。我需要将这些值转换为欧元四舍五入。数据格式为int

下面是表格中数据的示例:

CustID   Money   Date
===========================
1        148180  2021-02-10
2        520     2021-02-11
3        50      2021-02-11
4        25      2021-02-12

Money我们知道是以欧分为单位的,这意味着对于CustID:

,将四舍五入到正确的值
1 - 1482 
2 - 5,2 
3 - 0.5 
4 - 0.3 
关键是,当Money中的值列只有Eurocents,在CustID 3或4的情况下,我也必须显示这个值,而不仅仅是没有小数点的数字。所以我需要将这一列的转换设置为小数点后两位。你有什么建议吗?

编辑

我试过这样做,但结果是1481,四舍五入,没有两个小数。

SELECT CONVERT(varchar, CAST(148180/100 AS money), 1)

将1欧分除以100得到1欧分。在SQL Server中使用100.0来避免整数除法。

CEILING四舍五入到下一个整数。

现在进入显示格式。小数点后两位。然而,一个数字没有特定的小数位数。在SQL Server数据库中,1.2和1.20是一样的,和1.20000是一样的。

如果要以某种格式显示数字,则需要一个函数将该数字转换为具有所需的小数点、与区域性匹配的小数点字符(逗号或点)等的字符串。此函数为FORMAT

select custid, format(ceiling(money / 100.0), 'N2') as euros
from mytable;

格式'N2'只是一个例子。当然,您可以使用不同的格式。阅读这里:https://learn.microsoft.com/de-de/sql/t-sql/functions/format-transact-sql?view=sql-server-ver15和这里:https://learn.microsoft.com/de-de/dotnet/standard/base-types/standard-numeric-format-strings。

演示:https://dbfiddle.uk/?rdbms=sqlserver_2019&小提琴= 8 ce85ce73e624d2b6bf9426b410be0fd

对于数字输出:除法值必须包含十进制或浮点数,你可以这样尝试吗?

SELECT REPLACE(CONVERT(varchar(20), (CAST(148100/100.00 AS money)), 1), '.00', '')

相关内容

  • 没有找到相关文章

最新更新