2017-06-10 37 views
0

我有表中有8列,現在我想要的是如果在第1列,第2列和第3列中有值,第4列爲空,並且再次爲第5列,第6列值使得第5列, 6應該在第3列和第4列更新。對於所有不同的情況都是如此。這有可能與單個查詢解決它,而無需使用存儲過程或任何迭代process.thanks更新列的值的順序

+1

請分享所有的案件。 –

+0

如果你只有6列,只需寫一個case語句和所有的組合。如果列數很大,那麼你可以用unpivot + row_number –

+0

Rohit構建一些東西,可以有多種場景。 1)我有12列,並有可能前11個是空白,數據存在於第12列比我需要將其移動到第1列2)前8欄是空白,9有價值,然後10是空白,11,12有價值。 3)第1,2列有值3,4沒有值,則5,6再有值。 ...所以這n種場景都是可能的。所以每次我必須檢查起始列是否有值,如果不是,那麼將值移動到該列等等。 –

回答

0

試試這個:

UPDATE a 
SET a.column3 = b.column5, a.column4 = b.column6 
FROM Table a 
INNER JOIN myTable b 
ON a.Id = b.Id 
WHERE column1 IS NOT NULL AND 
     column2 IS NOT NULL AND 
     column3 IS NULL AND 
     column4 IS NULL AND 
     column5 IS NOT NULL AND 
     column6 IS NOT NULL 
+0

感謝這個答案,但正如你已經給出了第3列和第4列爲空的情況。但並非總是如此。有可能有不同的情況。 –