2016-09-08 21 views
0

SQLクエリの作成といくつかのアドバイス/援助が必要です。
元の表の'vocab'列に、私は何とか上記の行から情報を取り戻したいと思います。上記のレコードからデータを取得するためのSQLクエリ

例えば

-行2の

( 'lstseqno' = 2)-1であり、実際には( 'lstseqno' = 1)上の行の '単語' に等しく、 '単語' 、 'vocab' = 2

6行目( 'lstseqno' = 6) '-1'の 'vocab'は実際には上記の行の 'vocab'( 'lstseqno' = 5)と等しいので、 'vocab' = 4

これを行うにはどうすればよいでしょうか?
非常に感謝しています!

enter image description here

+1

? [modern SQL](http://modern-sql.com/slides)では、これは通常 'lag()'関数を使用して行われます –

+0

どのSQLのバージョン(SQL Server、Oracle、PostgreSQL)を使用していますか?どのバージョンのSQL Serverがあれば(2005年、2008年、2012年など)? –

+0

ここで初心者はDBMSが何を意味するか分かりません。 はとにかく –

答えて

0

あなたが実際のテーブル名でyour_tableを置き換える必要があります。もちろん、この

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 

を試してみてください。 -1を実際の値(または空の値の場合はis null)に置き換えることもできます。

+0

こんにちはエフゲニー を信じて、私は単に私の編集したunswer上の表の感覚 おかげ –

+0

whachを行いますクエリをしたい、テーブルを変更したくありません – Evgeny

0

多分これは助けることができる:あなたが使用しているDBMS

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 
関連する問題