1

与えられたテーブル:

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

ColumnNameColumnPosition に基づく事前定義された値のマッピングに従って更新したいと考えています。

例:
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

一連の case ステートメントを実行する代わりに、マップを設定してから結合を実行できます

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 に答える