首页 > 解决方案 > SQL如何从上面的一行更新一行?

问题描述

我有一张带有产品配置的表格。

在此处输入图像描述

Id_conf 与产品 (colspan_title) 按行与标题连接,并且 colspan_no 中的行数即 id_conf 4461-4465 与来自行 4461 的 colspan_title 连接。

如何编写一个将每个 id_conf 与 colspan_title 连接起来的查询?是否可以从上面的单元格更新单元格?

文本数据:

id_conf position    proj_id colspan_no  colspan_title  
4460    1           575     1           prod1  
4461    2           575     5           prod2  
4462    3           575     0     
4463    4           575     0     
4464    5           575     0     
4465    6           575     0     
4466    7           575     2           prod3  
4467    8           575     0     
4468    9           575     3           prod4  
4469    11          575     0     
4470    10          575     0     
4471    12          575     3           prod5  
4472    14          575     0     
4473    13          575     0     

预期输出所有 id_conf 都有 colspan_title

谢谢 DS

标签: sqlsql-server

解决方案


您也有position列,可以按如下方式使用它来更新为 0colspan_title的所有行colspan_no

update your_table t
set t.colspan_title = (select tt.colspan_title from your_table tt
                        where tt.colspan_no > 0 and t.proj_id = tt.proj_id
                          and t.position between tt.colspan_no 
                                             and tt.colspan_no + tt.position - 1)
where t.colspan_no = 0

推荐阅读