转换货币值 - 欧分到欧元四舍五入
Converting currency values - eurocents to euros with rounding
应用程序以 欧分 将数据导出到我的 DWH。我需要将这些值转换为 欧元 四舍五入 。欧分数据格式为 int
这是 table 中的数据示例:
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 的情况,我还必须显示此值,而不仅仅是没有小数点的数字。所以我需要将转换到这一列设置为小数点后两位。你有什么建议吗?
编辑
我试过类似的方法,但结果是 1,481,四舍五入且没有两位小数。
SELECT CONVERT(varchar, CAST(148180/100 AS money), 1)
对于带数字的输出:除法值必须包含小数或浮点数,你可以这样试试吗?
SELECT REPLACE(CONVERT(varchar(20), (CAST(148100/100.00 AS money)), 1), '.00', '')
您可以将欧分除以 100 得到欧元。使用 100.0
以避免 SQL 服务器中的整数除法。
你用CEILING
四舍五入到下一个整数。
现在到显示格式。你想要两位小数。但是,数字没有特定的小数位数。数字 1.2 与 1.20 相同,并且仍然与 SQL 服务器数据库中的 1.20000 相同。
如果你想以某种格式显示一个数字,你需要一个函数来将数字转换成具有所需小数位的字符串,小数字符与你的文化相匹配(逗号或点)等。该函数因为这是 FORMAT
.
select custid, format(ceiling(money / 100.0), 'N2') as euros
from mytable;
格式'N2'
只是一个例子。您当然可以使用不同的格式。在这里阅读:https://docs.microsoft.com/de-de/sql/t-sql/functions/format-transact-sql?view=sql-server-ver15 and here: https://docs.microsoft.com/de-de/dotnet/standard/base-types/standard-numeric-format-strings.
演示:https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=8ce85ce73e624d2b6bf9426b410be0fd
应用程序以 欧分 将数据导出到我的 DWH。我需要将这些值转换为 欧元 四舍五入 。欧分数据格式为 int
这是 table 中的数据示例:
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 的情况,我还必须显示此值,而不仅仅是没有小数点的数字。所以我需要将转换到这一列设置为小数点后两位。你有什么建议吗?
编辑
我试过类似的方法,但结果是 1,481,四舍五入且没有两位小数。
SELECT CONVERT(varchar, CAST(148180/100 AS money), 1)
对于带数字的输出:除法值必须包含小数或浮点数,你可以这样试试吗?
SELECT REPLACE(CONVERT(varchar(20), (CAST(148100/100.00 AS money)), 1), '.00', '')
您可以将欧分除以 100 得到欧元。使用 100.0
以避免 SQL 服务器中的整数除法。
你用CEILING
四舍五入到下一个整数。
现在到显示格式。你想要两位小数。但是,数字没有特定的小数位数。数字 1.2 与 1.20 相同,并且仍然与 SQL 服务器数据库中的 1.20000 相同。
如果你想以某种格式显示一个数字,你需要一个函数来将数字转换成具有所需小数位的字符串,小数字符与你的文化相匹配(逗号或点)等。该函数因为这是 FORMAT
.
select custid, format(ceiling(money / 100.0), 'N2') as euros
from mytable;
格式'N2'
只是一个例子。您当然可以使用不同的格式。在这里阅读:https://docs.microsoft.com/de-de/sql/t-sql/functions/format-transact-sql?view=sql-server-ver15 and here: https://docs.microsoft.com/de-de/dotnet/standard/base-types/standard-numeric-format-strings.
演示:https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=8ce85ce73e624d2b6bf9426b410be0fd