0

我有 3 列数据:年龄、性别、分数。年龄是年龄,性别是 M 或 F,分数范围为 1-100。

如何创建一个新列,以便如果性别为 M,则在 Points 列中添加 5 分,如果性别为 F,则从 Points 列中的任何内容中减去 3 分?

我想我需要 CASE。我使用 ALTER TABLE 添加了一个名为 PointsRevised 的新列,然后添加。

现在,我想用新值填充这个新的 PointsRevised 列,具体取决于性别是 M 还是 F。

UPDATE [Example].[dbo].[example]
SET POINTSREVISED
CASE 
WHEN Gender = 'M' Then PointsRevised = Points + 5  
WHEN Gender = 'F' Then PointsRevised = Points - 3
END

我显然做错了什么。

4

1 回答 1

6

这将起作用:

UPDATE [Example].[dbo].[example]
SET POINTSREVISED =
  CASE 
  WHEN Gender = 'M' THEN Points + 5  
  WHEN Gender = 'F' THEN Points - 3
  END

更简单:

UPDATE [Example].[dbo].[example]
SET POINTSREVISED =
  CASE Gender
  WHEN 'M' THEN Points + 5  
  WHEN 'F' THEN Points - 3
  END

如果 Gender 的唯一有效值是 'M' 和 'F' (并且不能为 NULL),您可以将上面WHEN 'F' THEN的内容简单地替换为ELSE.

根据您的要求,计算列可能会更好。

于 2013-02-07T22:38:17.883 回答