2012-03-20 72 views
1

如果列A的值大於零,我將從列A中選擇現有列C.如果不是,那麼我想用列B填充它。只有列B爲零時,它纔會填充列A.如果列A和B都有值,它總是使用B.任何幫助,將不勝感激。根據標準填充現有列的新列

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

我的插入操作是正確的,但我選擇了列扭轉這是引起了我認爲是一個錯誤。感謝您所有的幫助。這是多麼可敬的事情。

+1

你使用什麼數據庫? – 2012-03-20 13:30:11

回答

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 
2

假設你要更新的價值永久而不是在選擇只是改變它,這樣做:

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