sql-server - 如果用求和表达式表示,则将货币四舍五入到最接近的美元
问题描述
我想将以下输出中的货币四舍五入到最接近的美元,例如,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]
产生这个输出:
解决方案
在函数中使用'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]
............................
推荐阅读
- c++ - 可变参数模板初始化程序的 C 样式数组 constexpr 限定
- amazon-eks - EKS pod 记录到 Elastic Cloud
- qlikview - 尝试在 QlikView 12.40 中加载报告时,QlikView 错误源文档无法重新加载
- spring - 自定义 Spring Initializr 的默认项目结构
- python - 如何为 Python 模块制作 VScode launch.json
- jenkins - Jenkins 流水线不断
- amazon-web-services - 如何阅读 aws 文档
- python - 创建一列<另一列的新数据框列?
- postgresql - 如何使用 JPQL、Spring Data Repositories 和 Hibernate 为 TimescaleDB `time_bucket` 函数参数化 Postgresql 间隔
- arrays - 数组读取空格和控制字符