У меня проблемы с попыткой исправить проблему конвертации в SQL Server 2016 - PullRequest
0 голосов
/ 10 октября 2019

У меня есть инструкция case, в которой я пытаюсь суммировать значения 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

Любая помощь / направление будет оценено. Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вы изменили команды REPLACE и CAST. Вы должны CAST значение в строку, затем ЗАМЕНИТЬ десятичную точку и добавить знак плюс в конец, затем взять ПРАВО (..., 12) этого значения.

0 голосов
/ 10 октября 2019

Одно из полей, которое вы вводите sum(), содержит значение со знаком «+». В результате SQL Server не может преобразовать значение в целое число до sum(). Кажется, вы применяете функцию к нечисловым столбцам. Таким образом, у вас есть неожиданные данные по крайней мере в одном из этих столбцов. Попробуйте исключить некоторые из столбцов sum(), чтобы выяснить, в каком столбце содержатся ошибочные данные. В идеале у вас должны быть правильные типы данных в каждом столбце, и вы не столкнетесь с этой проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...