使用case语句插入到不同的列中

时间:2014-01-28 15:23:07

标签: sql sql-server-2008

是否可以在表上选择,然后使用Case语句将结果填充到不同的列中?我已经看到了使用“Case”进行查询但未插入新列的示例。我尝试过各种各样的组合但是做得很短。

例如,

    Table - CLIENTDETAILS

    VATRATE - 1, 2, 3, 0  //This is a populated column with 6500 rows

    VATPERC - 15.0, 17.5, 20.0, 0.00  //This is an empty column that needs to be filled with case results.

    INSERT INTO CLIENTDETAILS(VATPERC) values(
    (SELECT CASE VATRATE
      WHEN '1' THEN '15.0'
      WHEN '2' THEN '17.5'
      WHEN '3' THEN '20.0'
      WHEN '0' THEN '0.00'
    END
    FROM CLIENTDETAILS AS CLIENTDETAILS_1))

感谢您一如既往的帮助。

2 个答案:

答案 0 :(得分:4)

听起来您只想更新现有行中的其他列

UPDATE CLIENTDETAILS
   SET VATPERC = 
     CASE VATRATE
        WHEN '1' THEN '15.0'
        WHEN '2' THEN '17.5'
        WHEN '3' THEN '20.0'
        WHEN '0' THEN '0.00'
      END
  FROM CLIENTDETAILS;

Fiddle here

我建议将VATRATEVATPERC的类型更改为数字类型,这样可以在不进行投射的情况下进行计算。

答案 1 :(得分:0)

案例陈述可根据您的需要使用如下:

   INSERT INTO CLIENTDETAILS(VATPERC)
   SELECT 
     CASE 
       WHEN VATRATE = '1' THEN '15.0'
       WHEN VATRATE = '2' THEN '17.5'
       WHEN VATRATE = '3' THEN '20.0'
       WHEN VATRATE ='0' THEN '0.00'
     END
   FROM 
     CLIENTDETAILS