0

在我的表中,我有一个名为 AMT 的字段,用于从 excel 导入的字段是 char(10)。该字段是用逗号或 MM+ 分隔的美元金额。我想更新一个名为 AMTBigint 的新字段,该字段将此字段转换为 bigint(美元金额或 MM+ 的 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 代替,但无法获得正确的语法。建议表示赞赏。

4

1 回答 1

0

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

UPDATE FI_ex_data
SET AMTBigint = case
     WHEN AMT = 'MM+' THEN 5000001
     ELSE cast(replace(AMT, ',' , '') as integer)
  END
于 2013-08-01T14:20:09.060 回答