2013-08-01 68 views
0

在我的表中,我有一个名为AMT的字段,用于从Excel导入目的是char(10)。该字段是美元金额,用逗号或MM +分隔。我想更新一个名为AMTBigint新的领域,这个领域转换为BIGINT(无论是MM +的金额或5000001)我有这个过程:基于另一个字段设置的SQL字段

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

您需要根据预期结果更新表格的列。因此,如果您编写的案例提供了您需要的数据,那么您应该执行以下操作。这将使用case语句的结果更新每行的AMTBigint。

UPDATE FI_ex_data 
SET AMTBigint = case 
    WHEN AMT = 'MM+' THEN 5000001 
    ELSE cast(replace(AMT, ',' , '') as integer) 
    END 
相关问题