将新列放入表中,并希望通过case语句填充新数据

时间:2018-11-17 20:11:05

标签: sql sql-server sql-update

我有一个基本表,其中包含客户,地区,销售人员,销售项目。销售项目是缩写,例如,TENN是网球鞋的输入。在新列中,将其称为SALES2,我想用其他名称更正。这是我到目前为止的内容,但是没有用

ALTER TABLE SALES
DROP COLUMN SALES2 varchar(25) AFTER Sales Item;
UPDATE SALES
SET SALES2= CASE
(
WHEN Sales Item = 'TENN' THEN 'Tennis Shoes'
WHEN Sales Item = 'PJs' then 'Pajamas'
ELSE = Other
)
END

这就是我在寻找最终结果

2 个答案:

答案 0 :(得分:0)

这里有两个问题。首先,您想要add的一列,而不是drop的一列(这意味着将其删除):

ALTER TABLE SALES
ADD COLUMN SALES2 varchar(25) AFTER Sales Item;

第二,您的case语法错误-您应该在=之后删除else,使用单引号表示该字符串并删除括号:

UPDATE SALES
SET SALES2= CASE
WHEN [Sales Item] = 'TENN' THEN 'Tennis Shoes'
WHEN [Sales Item] = 'PJs'  THEN 'Pajamas'
ELSE 'Other'
END

答案 1 :(得分:0)

使用计算列!然后,无需更新。该列只是计算出的值:

ALTER TABLE SALES
    ADD SALES2 AS (CASE WHEN SalesItem = 'TENN' THEN 'Tennis Shoes'
                        WHEN SalesItem = 'PJs'  THEN 'Pajamas'
                        ELSE 'Other'
                   END)