1

私の現在の表形式の出力は

        ---------------------------------------------------
        |    id               col1            col2        |
        ---------------------------------------------------
        |    1           |    test1      |    1           |
        |    2           |    test11     |    0           |
        |    3           |    test12     |    0           |
        |    4           |    test13     |    0           |
        |    5           |    test14     |    0           |
        |    6           |    test2      |    2           |
        |    7           |    test21     |    0           |
        |    8           |    test22     |    0           |
        |    9           |    test23     |    0           |
        |    10          |    test24     |    0           |
        ---------------------------------------------------

期待される出力は

        ---------------------------------------------------
        |    id               col1            col2        |
        ---------------------------------------------------
        |    1           |    test1      |    1           |
        |    2           |    test11     |    1           |
        |    3           |    test12     |    1           |
        |    4           |    test13     |    1           |
        |    5           |    test14     |    1           |
        |    6           |    test2      |    2           |
        |    7           |    test21     |    2           |
        |    8           |    test22     |    2           |
        |    9           |    test23     |    2           |
        |    10          |    test24     |    2           |
        ---------------------------------------------------

これはカーソルなしで可能ですか?現在の行の値が 0 の場合に、現在の行の値に一番上の行の値を追加する方法はありますか?

4

2 に答える 2

4

col2次のようなゼロ以外の最後の値を見つけることができます。

select  id
,       col1
,       (
        select  top 1 col2
        from    YourTable yt2
        where   yt2.id <= yt1.id
                and yt2.col2 <> 0
        order by
                yt2.id desc
        )
from    YourTable yt1

SQL Fiddle の例。

于 2013-05-03T14:52:23.953 に答える