通过将数据从一行移动到另一行多次来更新表

时间:2017-06-28 12:12:33

标签: sql

有一个sql表,我需要在第4列和第4列中移动第2行并移动数据5并将其移至第1行。第4栏和第4栏中的值5是动态的(即每次都不一样)

桌子上的背景。每8行被组合在一起(通过action_id升序)到另一个表中的另一个实体(但此任务不需要另一个表) 例如

action_id = 839283 col 4 = space col 5 = space
action_id = 839284 col 4 = SMS col 5 = L1

我需要移动短信& L1到上面的行并且空白了action_id = 839284的行 这将重复多次。 我正在考虑创建一个选择到一个临时表来获取我需要更改的行(使用其他2个表作为链接)但我不知道如何动态地将数据从一行移动到另一行

1 个答案:

答案 0 :(得分:0)

假设:

  • sql server
  • action_id值总是相隔一个

3 stpes:

select action_id as To_Empty
into #EmptyMe
from MyTable
where col4 is not null

with CTE as
(
select action_id,
       col4, 
       col5, 
       lag(col4) over (order by action_id) as n_col4, 
       lag(col5) over (order by action_id) as n_col5
from MyTable
where col4 is not null
)
update CTE
set col4 = n_col4, col5 = n_col5 

update MyTable
set col4 = null, col5 = null
where exists (select 1 from #EmptyMe where action_id = To_Empty)