【发布时间】:2019-10-10 16:31:34
【问题描述】:
我有一个案例语句,我试图对多个列 int 值求和,然后将求和值格式化为“00000015700+”作为示例,但在 SQL Server 2016 中出现转换错误。
这是错误:
将 varchar 值 '00000015700+' 转换为 数据类型 int。
这是我的代码:
CASE
WHEN x.Code = 'WRITPREM' AND x.[Description] = 'NEW POLICY' THEN RIGHT('00000000000' + CAST(REPLACE((sum(x.totalPolicy_BIN) + sum(x.totalPolicy_COL) + sum(x.totalPolicy_OTC) + sum(x.totalPolicy_PDM) + sum(x.totalPolicy_MED) +sum(x.totalPolicy_PIP) + sum(x.totalPolicy_REN) + sum(x.totalPolicy_TOW) + sum(x.totalPolicy_UBI) + sum(x.totalPolicy_UPD)),'.','') as varchar(12)) + '+',12)END as TEST
任何帮助/指导将不胜感激。谢谢。
【问题讨论】:
-
您需要提供更多信息。您查询的表结构和一些示例数据。您要添加的列的数据类型是什么。还要提供整个查询,因为它可能是导致问题的其他原因
-
您已经颠倒了
REPLACE和CAST命令。您应该将CAST值转换为字符串,然后将REPLACE小数点添加到末尾,然后取该值的RIGHT(..., 12)。另外,问题:您真的想将小数点后的值与数字合并,还是要截断小数点处的值?两者都是处理数字的有效方法,但我只是想确保您确实希望包含后十进制数字。 -
@LaughingVergil,感谢您的帮助。这就是答案。感谢您的时间和帮助。
标签: sql-server tsql