Ste*_*eam 1 sql sql-server sql-server-2008
给出一张表:
ColumnPosition, ColumnName
Col 1, NULL
Col 2, NULL
Col 3, NULL
Run Code Online (Sandbox Code Playgroud)
我想ColumnName根据ColumnPosition的预定义值映射进行更新.
例如:
如果ColumnPosition ='Col 1',则将ColumnName更新为'Name'如果ColumnPosition ='Col 3',则将ColumnName更新为'Address'
如何使用CASE语句完成此操作?
我认为你的意思是,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
Run Code Online (Sandbox Code Playgroud)
您可以设置地图然后进行连接,而不是做一堆案例陈述
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |