SQL基于先前行中的值修改行

时间:2013-09-19 21:46:32

标签: sql row operation

我有下表,想要转换成如下所示的表格。只要列'name'中缺少值,就会从相邻的顶行填充该值。我通过创建自我联接来解决我的目的。但在某些情况下,连续2或3行是空白的,我必须多次运行我的自连接。此外,我不确定数据中有多少连续空白,我不得不一次又一次地继续运行自我加入,直到它停止更新任何记录

我正在使用SQL Server管理工作室......

id  name
1   nj
2   ab
3   
4   
5   cd
6   
7   ef
8   
9   
10  gh
11  ij
12  jk

我想要的输出:

id  name
1   nj
2   ab
3   ab
4   ab
5   cd
6   cd
7   ef
8   ef
9   ef
10  gh
11  ij
12  jk

1 个答案:

答案 0 :(得分:2)

作为选择查询,您可以使用相关的子查询:

select id,
       (select top 1 name
        from yourtable t2
        where t2.id <= t.id and
              t2.name is not null
        order by t2.id desc
       ) as name
from yourtable t;