SQL查询从上面的记录中获取数据

时间:2016-09-08 10:06:50

标签: sql sql-server sql-server-2008

编写SQL查询并寻找一些建议/帮助时遇到困难 在'vocab'列的原始表格中,我想以某种方式从上面的行中恢复信息。

例如 -

在第2行(' lstseqno' = 2)'词汇'这是-1实际上等于'词汇'上面一行(' lstseqno' = 1),所以'词汇' = 2

在第6行(' lstseqno' = 6)中,'词汇'这是-1实际上等于'词汇'上面一行(' lstseqno' = 5),所以'词汇' = 4

如何编写查询来执行此操作?
非常感谢!

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个

select iif(t.vocab=-1, (select t2.vocab from your_table t2 
                    where t2.lstseqno=t.lstseqno-1),
                    t.vocab) as vocab,
       t.ref, t.code -- add here all other fields 
    from your_table t

当然,您应该使用实际的表名替换your_table。您也可以将-1替换为实际值(或使用is null替换为空值。)

答案 1 :(得分:0)

也许这可能会有所帮助:

select actial.vocab [actual_vocab], above.vocab [above_vocab]
from original_tbl actual
left join original_tbl above on actual.lstseqno = above.lstseqno - 1
    and actual.code = above.code
    and actual.level = above.level