我如何在SQL中使用CASE作为示例?

时间:2013-02-07 22:36:21

标签: sql sql-server-2008

我有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

我显然做错了什么。

1 个答案:

答案 0 :(得分: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

根据您的要求,computed column可能会更好。