首页 > 解决方案 > 如果用求和表达式表示,则将货币四舍五入到最接近的美元

问题描述

我想将以下输出中的货币四舍五入到最接近的美元,例如,28,143.97 美元变为 28,144 美元。round([some variable], 2)正如类似帖子中所解释的那样,该功能似乎效果最佳。但是,在我的 CASE 表达式中应用时,会出现以下错误:

消息 8114,级别 16,状态 5,第 4 行将数据类型 nvarchar 转换为数字时出错。

我能得到的最接近我想要的输出使用这个查询:

select 
[Financial Class]
,format(sum(case when [Month] = 'May' then [Credits] else 0 end),'c','en-US') [May]
,format(sum(case when [Month] = 'June' then [Credits] else 0 end),'c','en-US') [June]
,format(sum(case when [Month] = 'July' then [Credits] else 0 end),'c','en-US') [July]
from (
SELECT 
fc.financial_class_name [Financial Class]
,case
        when AGING_DATE >= '2020-07-01' AND AGING_DATE < '2020-08-01' then 'July'
        when AGING_DATE >= '2020-06-01' AND AGING_DATE < '2020-07-01' then 'June'
        when AGING_DATE >= '2020-05-01' AND AGING_DATE < '2020-06-01' then 'May'
        else null end [Month]
,sum(HAR_AMOUNT)  as [Credits]
FROM HSP_BKT_AGING_HX hx
left join clarity_fc fc on hx.har_fin_class_c=fc.financial_class
WHERE 
HAR_ACCT_STATUS_C IN ('4')
AND HAR_AMOUNT < 0
AND AGING_DATE >= '2020-05-01' AND AGING_DATE < '2020-08-01'
group by aging_date, financial_class_name
) x
group by [Financial Class]

产生这个输出:

在此处输入图像描述

标签: sql-server

解决方案


在函数中使用'c0'而不是也将舍入到最接近的整数:'c'format()

............................
,format(sum(case when [Month] = 'May' then [Credits] else 0 end),'c0','en-US') [May]
,format(sum(case when [Month] = 'June' then [Credits] else 0 end),'c0','en-US') [June]
,format(sum(case when [Month] = 'July' then [Credits] else 0 end),'c0','en-US') [July]
............................

推荐阅读