3

次のようにイベントとその終了日を含むテーブルがあります-

Event_id    Event_name        Event_end_date
1           Name Change       31-Mar-2010       (prior to 31-Mar-2010)
2           Parent change     31-Oct-2010       (Logically its duration is 1-Apr-2010 (31-Mar-2010 + 1(Day) ) to 31-Oct-2010)
3           Name Change       31-Jul-2011       (Logically its duration is 1-Nov-2010 (31-Oct-2010 + 1(Day) ) to 31-Jul-2011)

だから私は次のように結果を得るためにクエリを書きたいです-

Event_id    Event_name     Event_start_date    Event_end_date
1           Name Change        -               31-Mar-2010
2           Parent change   1-Apr-2010         31-Oct-2010
3           Name Change     1-Nov-2010         31-Jul-2011
4

4 に答える 4

2
SELECT event_id, event_name,
   LAG (event_end_date ) OVER (ORDER BY event_end_date ASC )+1
                                                         event_start_date,
   event_end_date
 FROM event

ここに画像の説明を入力してください

于 2012-06-04T08:18:40.060 に答える
2
select event_id,
       event_name, 
       (lag(event_end_date) over (order by event_end_date)) + 1 as event_start_date, 
       event_end_date
from event_table
order by event_end_date desc
于 2012-06-04T08:19:40.133 に答える
0

これは、event_idを使用してテーブルを結合するSelf LeftOuterJoinを使用して実行できます。

      select t1.Event_id ,t1.Event_name, coalesce(t2.Event_end_date,'-'),
             t1.Event_end_date
      from event_table t1 
                left outer join event_table t2 
      on t1.Event_id=t2.Event_id+1

これはmysqlで機能します。オラクルでも動作するはずです。

于 2012-06-04T08:10:56.940 に答える
0

私は正規表現でそれをします:)

select event_id, 
       event_name, 
       REGEXP_SUBSTR(comments, ' \d+-\w{3}-\d{4} ') as event_start_date, 
       to_char(event_end_date,'dd-MON-yyyy')
from events

http://sqlfiddle.com/#!4/fa1e5/16/0

于 2012-06-04T08:23:30.653 に答える