我有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
我显然做错了什么。
答案 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可能会更好。