這會給你的PROCESS
,CHANGE IN STATE
和NUMBER OF DAYS
:
SQL> WITH DATA AS(
2 SELECT 'A' PROCESS, 0 STATE, TO_DATE('19/09/14','dd/mm/rr') DT FROM DUAL UNION ALL
3 SELECT 'A', 1, TO_DATE('30/09/14','dd/mm/rr') FROM DUAL UNION ALL
4 SELECT 'A', 2, TO_DATE('01/10/14','dd/mm/rr') FROM DUAL)
5 SELECT PROCESS,
6 state
7 ||' - '
8 ||new_state change_in_state,
9 NEW_DT-dt NUMBER_OF_DAYS
10 FROM
11 (SELECT A.*,
12 LEAD(STATE) OVER(ORDER BY STATE, DT) NEW_STATe,
13 LEAD(DT) OVER(ORDER BY STATE, DT) NEW_DT
14 FROM DATA A
15 )
16 WHERE NEW_DT-dt IS NOT NULL
17/
PROCESS CHANGE_IN_ NUMBER_OF_DAYS
---------- ---------- --------------
A 0 - 1 11
A 1 - 2 1
謝謝您的回答。我用0 vlaue獲得time_0_1,其餘爲空。我不知道爲什麼 – Madmartigan 2014-10-01 09:39:05
是你的小樣本的實際數據?什麼是真正的字段名稱和表名稱?您投入樣本的努力越多,結果就越好。您也可以設置您自己的http://sqlfiddle.com並提供給我們URL – 2014-10-01 10:05:08
我明白了,U_B_A。非常感謝! – Madmartigan 2014-10-01 11:35:08