应用程序将数据导出到我的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', '')