转换货币值 - 欧分到欧元四舍五入

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