Sql server 按顺序更新列的值

Sql server 按顺序更新列的值,sql-server,Sql Server,我有一个表,其中有8列,现在我想要的是,如果在第1列、第2列和第3列、第4列中有值,那么第5列、第6列的值都为null,所以这些第5列、第6列应该在第3列和第4列中更新。等等,适用于所有不同的情况。是否可以在不使用存储过程或任何迭代过程的情况下通过单个查询解决此问题。谢谢尝试以下操作: UPDATE a SET a.column3 = b.column5, a.column4 = b.column6 FROM Table a INNER JOIN myTable b ON a.Id = b.I

我有一个表,其中有8列,现在我想要的是,如果在第1列、第2列和第3列、第4列中有值,那么第5列、第6列的值都为null,所以这些第5列、第6列应该在第3列和第4列中更新。等等,适用于所有不同的情况。是否可以在不使用存储过程或任何迭代过程的情况下通过单个查询解决此问题。谢谢尝试以下操作:

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

请共享所有案例。如果您只有6列,只需编写包含所有组合的案例语句。如果列的数量很大,那么您可以使用unpivot+row\u numberRohit构建一些东西,可以有多个场景。1) 我有12列,可能前11列是空白的,第12列中存在的数据比我需要移动到第1列的数据要多。2)前8列是空白的,9列有值,然后10列是空白的,11,12列有值。3) 列1,2有值3,4没有值,然后5,6有值。。。所以这n种情况是可能的。因此,每次我都必须检查起始列是否有值,如果没有,则将值移动到该列,依此类推。感谢您的回答,但正如您在第3列和第4列中给出的条件一样,为null。但这并不总是正确的。可能会出现不同的情况。