1

私が使用しているのはSybase15です。
こんな感じのテーブルがあります

--------------------------------------------
 Date       |  GroupId  |  Comment
--------------------------------------------
01/05/2012     1              ABC
01/05/2012     2              XYZ
02/05/2012     1              null
02/05/2012     2              null
03/05/2012     1              null
03/05/2012     2              null
04/05/2012     1              DEF
04/05/2012     2              GHI
05/05/2012     1              null
05/05/2012     2              null
06/05/2012     1              null

私が探している出力は次のとおりです。コメントフィールドが空/nullの場合は、前日の値で更新します(同じGroupIdを持つ)

-----------------------------------------------
 Date            |  GroupId  |   Comment
-----------------------------------------------
01/05/2012           1              ABC
01/05/2012           2              XYZ
02/05/2012           1              ABC
02/05/2012           2              XYZ
03/05/2012           1              ABC
03/05/2012           2              XYZ
04/05/2012           1              DEF
04/05/2012           2              GHI
05/05/2012           1              DEF
05/05/2012           2              GHI
06/05/2012           1              DEF
4

1 に答える 1

1

これは注意が必要です。Sybaseはlag()またはをサポートしていないと思いますouter apply。サブクエリで以前のすべてのコメントを検索し、non exists句を使用して、間にコメントがないことを要求できます。前のコメントが見つかるはずです。

select  Date
,       GroupId
,       case
        when Comment is not null then Comment
        else
        (
        select  Comment
        from    YourTable yt2
        where   yt1.GroupId = yt2.GroupId
                and yt2.Comment is not null
                and yt2.Date < yt1.Date
                and not exists
                (
                select  *
                from    YourTable yt3
                where   yt1.GroupId = yt2.GroupId
                        and yt2.Comment is not null
                        and yt3.Date < yt2.Date and yt2.Date < yt1.Date
                )
        ) end as Comment
from    YourTable yt1
于 2012-04-29T12:48:29.623 に答える