有一个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个表作为链接)但我不知道如何动态地将数据从一行移动到另一行
答案 0 :(得分:0)
假设:
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)