1

给定一张桌子:

ColumnPosition, ColumnName
   Col 1,          NULL
   Col 2,          NULL
   Col 3,          NULL

我想ColumnName根据基于 ColumnPosition 的预定义值映射进行更新。

例如:
如果 ColumnPosition = 'Col 1' 则将 ColumnName 更新为 'Name' 如果 ColumnPosition = 'Col 3' 则将 ColumnName 更新为 'Address'

如何使用 CASE 语句来做到这一点?

4

2 回答 2

6

我认为你的意思是UPDATE而不是INSERT

UPDATE MyTable
SET ColumnName = CASE WHEN ColumnPosition = 'Col 1' THEN 'Name'
                      WHEN ColumnPosition = 'Col 3' THEN 'Address'
                      -- ... the rest of your conditions
                      ELSE -- put your default value here
                 END
于 2013-10-07T21:14:13.733 回答
5

您可以设置地图然后进行连接,而不是做一堆案例陈述

With Map as 
(
    SELECT       'Col 1' ColumnPosition , 'Name' as ColumnName
    UNION SELECT 'Col 3' , 'Address'
 )
UPDATE Table1 
SET Table1.ColumnName = Map.ColumnName
FROM
  table1  
  INNER JOIN MAP 
  ON Table1.ColumnPosition = Map.ColumnPosition;

演示

于 2013-10-07T21:23:55.180 回答