1
--------------------------------------
code      Start DT   End date  Status
--------------------------------------
Y68 25/OCT/11   25/OCT/11   ADM_CHECKD
Y68 25/OCT/11   25/OCT/11   SATISFIED
Y68 25/OCT/11   25/OCT/11   SATISFIED
Y68 25/OCT/11   31/OCT/11   SATISFIED
Y68         SATISFIED

私の要件は、最後の行の開始日がnullの場合、値は31 / oct/11である必要があるということです。これは前の行の終了日の値です。

前もって感謝します。

4

1 に答える 1

1

前の行による意図が、その来たコードの終了日順に並べられた最後の行を取得することである場合は、次を使用できます。

SQL> select code,
  2         nvl(start_dt, lag(end_dt, 1) over (partition by code order by end_dt)) start_dt,
  3         end_dt, status
  4    from data
  5   order by start_dt;

COD START_DT  END_DT    STATUS
--- --------- --------- ----------
Y68 28-FEB-13 01-MAR-13 ADM_CHECKD
Y68 01-MAR-13 02-MAR-13 SATISFIED
Y68 02-MAR-13 03-MAR-13 SATISFIED
Y68 03-MAR-13 04-MAR-13 SATISFIED
Y68 04-MAR-13           SATISFIED

例: http ://sqlfiddle.com/#!4 / abe8f / 1

于 2013-03-05T07:53:05.757 に答える