2013-08-01 4 views
0

В моей таблице у меня есть поле AMT, которое для импорта из excel-целей является char (10). Поле представляет собой либо сумму в долларах, разделенную запятыми, либо MM +. Я хочу, чтобы обновить новое поле под названием AMTBigint, который преобразует это поле в BIGINT (либо сумму в долларах или 5000001 для ММ +) У меня есть процедура:SQL Field set, основанный на другом поле

USE FI_external_trades; 
GO 
SELECT *, case 
    WHEN AMT = 'MM+' THEN 5000001 
    ELSE cast(replace(AMT, ',' , '') as integer) 
    END AS AMTBigint 
    From FI_ex_data; 
GO 

Выходные значения то, что я хочу, но они создают дубликат поле называется AMTBigint. Я попытался использовать set вместо этого, но не смог получить правильный синтаксис. Совет ценится.

ответ

0

Необходимо обновить столбец таблицы с ожидаемым результатом. Поэтому, если написанное вами дело содержит данные, которые вы хотите, тогда вы должны сделать следующее. Это приведет к обновлению AMTBigint каждой строки с результатом оператора case.

UPDATE FI_ex_data 
SET AMTBigint = case 
    WHEN AMT = 'MM+' THEN 5000001 
    ELSE cast(replace(AMT, ',' , '') as integer) 
    END 
Смежные вопросы