使用基于条件的现有列填充新列

时间:2012-03-20 13:28:50

标签: sql

如果它的值大于零,我将从列A中选择现有的列C.如果没有,那么我想用列B填充它。只有当列B为零时才会填充列A.如果A列和B列都有值,则它总是使用B.任何帮助都将受到赞赏。

( 
   CASE
       WHEN column A > 0  THEN column A
       ELSE column B                
   END
)

我的插入是正确的,但是我的选择将列反转,这导致我认为是错误。感谢您所有的帮助。什么是菜鸟做的事。

2 个答案:

答案 0 :(得分:2)

您选择的数据库将非常有用,因为您在大多数RDBMS中看起来已经是正确的。只需坚持你已经选择的内容:

--Insert based on select
--INSERT INTO [TABLETOINSERT] (ColumnToInsert)
SELECT 
    CASE 
       WHEN ColumnA > 0 THEN ColumnA
       ELSE ColumnB
    END AS NewColumn
--Or create a table the select
--INTO [NEWTABLENAME]
FROM [TABLENAME]

或更新:

UPDATE [TABLENAME]
SET NewColumn = 
    CASE 
       WHEN ColumnA > 0 THEN ColumnA
       ELSE ColumnB
    END

答案 1 :(得分:2)

假设您要永久更新值,而不是在select期间更改它,请执行:

update MyTable
set ColumnC = CASE        
        WHEN ColumnA > 0 THEN ColumnA        
        ELSE ColumnB                
    END