SQL字段基于另一个字段设置

时间:2013-08-01 14:18:40

标签: sql case procedure

在我的表中,我有一个名为AMT的字段,从excel目的导入是一个char(10)。该字段是以逗号或MM +分隔的美元金额。我想更新一个名为AMTBigint的新字段,该字段将此字段转换为bigint(美元金额或MM000的5000001)我有以下程序:

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,但无法获得正确的语法。建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

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

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