1

クレームの履歴を含むテーブルがあります。基本的に私はステータスの変更と日付を見ています。誰かがクレームを更新するたびに、新しい行が下に示すテーブルに読み込まれます。私が取得しようとしているのは、列「c_sta_clm」のすべてのステータス変更です。日付「row_begin_dt」とステータス変更 (PC から AC) と (AC から TE) の両方をキャプチャできるようにしたいのです。

これを簡単にする方法についてのガイダンスは大歓迎です。私は 2 つの揮発性のテーブルを作成し、C_CLM に参加して、最小ステータス日付を取得し、比較するなどを考えていました...

row_begin_dt                user                    c_clm          c_sta_clm
2009-10-08  ?       C5S2M                         09050012            PC
2009-10-24  ?       C5S2M                         09050012            AC
2009-10-28  ?       C1CMH                         09050012            AC
2010-10-30  ?       C1CMH                         09050012            AC
2011-05-19  ?       A9709                         09050012            AC
2011-06-09  ?       C6JEC                         09050012            AC
2011-10-07  ?       DAJ07                         09050012            TE
2011-11-04  ?       DAJ07                         0905001             TE
4

3 に答える 3

2

これにより、2009-10-24 と 2011-10-07 のレコードが取得されます。

select
    row_begin_dt,
    user,
    c_clm,
    c_sta_clm,
    -- Find the c_sta_clm of the previous row
    max(c_sta_clm) over (partition by c_clm order by row_begin_dt rows between 1 preceding and 1 preceding) as prev_c_sta_clm
from claims
-- Include only records which have a c_sta_clm different to that of the previous row
qualify c_sta_clm <> prev_c_sta_clm
于 2012-12-05T04:06:21.820 に答える
1

これを行う一般的な方法の 1 つは、相関サブクエリを使用することです。

select
from (select c.*,
             (select top 1 from claims c2 where c2.c_clm = c.c_clm a and c2.row_begin_dt > c.row_begin_dt order by row_begin_dt
             ) as next_sta_clm
      from claim c2
     ) c
where next_sta_clm <> c_sta_clm

lag多くのデータベースでは、 orlead関数を使用して同じことを行うことができますが、すべてのデータベースがそれらをサポートしているわけではありません。

于 2012-12-04T17:43:09.257 に答える
0

何かのようなもの

Select ToRecord.row_begin_dt From ClaimHistory FromRecord
inner join ClaimHistory ToRecord On ToRecord.c_clm = FromRecord.c_clm and ToRecord.row_begin_dt > FromRecord.row_begin_dt and ToRecord.c_sta_claim = 'AC'
Where FromRecord.c_sta_claim = 'PC'

ユーザー列が重要かどうかはわかりませんでしたが、ボルトで固定するのは簡単なはずです。あなたがどのDBMSを言っていないかを見て、SQLはひねりを必要とするかもしれません。

また、これは、あなたが何も言わなかった PC から XX から AC のようなものをピックアップします。

于 2012-12-04T17:50:50.703 に答える