Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server I';我在尝试纠正sql server 2016中的转换问题时遇到问题_Sql Server_Tsql - Fatal编程技术网

Sql server I';我在尝试纠正sql server 2016中的转换问题时遇到问题

Sql server I';我在尝试纠正sql server 2016中的转换问题时遇到问题,sql-server,tsql,Sql Server,Tsql,我有一个case语句,其中我尝试对多个列int值求和,然后将求和的值格式化为“000000 15700+”,作为示例,但在SQL Server 2016中出现转换错误 以下是错误: 将varchar值“000000 15700+”转换为时失败 数据类型int 这是我的密码: CASE WHEN x.Code = 'WRITPREM' AND x.[Description] = 'NEW POLICY' THEN RIGHT('00000000000' + CAST(REPLACE((su

我有一个case语句,其中我尝试对多个列int值求和,然后将求和的值格式化为“000000 15700+”,作为示例,但在SQL Server 2016中出现转换错误

以下是错误:

将varchar值“000000 15700+”转换为时失败 数据类型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

任何帮助/指导都将不胜感激。谢谢。

您正在使用的一个字段
sum()
ing包含带“+”号的值。因此,SQL Server无法将该值转换为整数以
sum()
。您似乎正在对非数字列应用该函数。因此,这些列中至少有一列包含意外数据。尝试删除一些
sum()
列,以确定哪个列包含有问题的数据。理想情况下,您应该在每列上都有正确的数据类型,而不会遇到此问题。

您已经反转了REPLACE和CAST命令。您应该将该值转换为字符串,然后替换小数点并在末尾添加加号,然后取该值的右(…,12)。

您需要提供更多信息。查询所针对的表结构和一些示例数据。要添加的列的数据类型是什么。还提供整个查询,因为它可能是导致问题的其他原因您已反转了
REPLACE
CAST
命令。您应该
CAST
将值转换为字符串,然后
替换
小数点并在末尾加上加号,然后取该值的
右侧(…,12)
。还有,问题:您真的想将小数点后的值与数字合并,还是想截断小数点处的值?这两种方法都是处理数字的有效方法,但我只是想确定您是否真的希望包含小数点后的数字。@LaughingVergil,谢谢您的帮助。这就是答案。感谢您的时间和帮助。