2015-02-23 4 views
1

У меня есть этот запрос:SQL Server: Ошибка преобразования числовой в VARCHAR случае

CASE ClaimsFees.TBA 
    WHEN 0 THEN CAST(IndemnityReserve AS NUMERIC(9,2)) 
    ELSE 'TBA' 
END AS 'Reserve Indemnity' 

, но я всегда получаю эту ошибку:

Error converting data type varchar to numeric

Я попытался преобразовать TBA как числовые, но я могу» t сделать это, я также не могу преобразовать все результаты в varchar, потому что, когда я перехожу в файл Excel, число 1.325,27 равно 132.527,00 с форматом ##, ## 0.00.

Есть ли способ на SQL Server, который я могу использовать для решения этой проблемы?

+6

Вы, разумеется, не можете смешивать типы данных в инструкции 'CASE'. Можете ли вы использовать «NULL» вместо «TBA»? –

+0

Ваша проблема с Excel - просто форматирование Excel. Как вы получаете эти данные в Excel? –

+0

Одиночные кавычки обозначают строки в SQL. Используйте двойные кавычки вокруг имен переменных. –

ответ

2

В столбце может быть только один тип, а «TBA» может быть только строкой, вам также нужно будет сделать числовую строку.

CASE ClaimsFees.TBA WHEN 0 
then cast(cast(IndemnityReserve as NUMERIC(9,2)) as varchar(12)) 
else 'TBA' 
end as 'Reserve Indemnity', 
+0

Да, это очень хорошо работает в sql, я получаю правильные значения, но когда я передаю их на excel whith spire.xls, мне нужно форматировать ячейки типа .NumberFormat = "##, ## 0.00" и 1325,27 стать 132.527,00, но Мне нужно 1.325,27, я думаю, что теперь это только проблема форматирования, но как я могу решить? – Andrea

+0

@Andrea. Теперь это другой вопрос о том, как форматировать числа в Excel. Предлагаю вам задать новый вопрос. –

+0

Правильно, извините, но я новый от stackoverflow – Andrea

Смежные вопросы