2014-01-23 109 views
0

我在Oracle中得到這個表(前3行是):SQL查詢來生成這個輸出

ID    StartTime     EndTime 
AAAAAA  20-Sep-2009 11:08:00  21-Sep-2009 12:08:54 
BBBBBB  20-Sep-2009 02:08:33  21-Sep-2009 12:08:58 
CCCCCC  20-Sep-2009 10:08:34  21-Sep-2009 12:08:38 

我試圖「生成」在SELECT查詢每個ID觸發,所以我必須爲StartTime寫1,EndTime爲0。我在尋找的結果將是:

Timestamp    Trigger_ID  ID 
20-Sep-2009 11:08:00 1   AAAAAA 
20-Sep-2009 02:08:33 1   BBBBBB 
20-Sep-2009 10:08:34 1   CCCCCC 
21-Sep-2009 12:08:54 0   AAAAAA 
21-Sep-2009 12:08:58 0   BBBBBB 
21-Sep-2009 12:08:38 0   CCCCCC 

[爲格式問題道歉]

我想我必須做一些事情,如:

SELECT StartTime, '0' as Trigger_ID, ID From MyTable 

SELECT EndTime, '1' as Trigger_ID, ID From MyTable 

卜我現在不如何將這些輸出合併到一個輸出中。

有人可以幫我看看這個查詢嗎?

非常感謝提前! :d

+0

你到目前爲止嘗試過什麼?我們不會爲您編寫代碼,但我們可以幫助您調試您的代碼。 –

+0

迄今爲止,使用我的代碼編輯。對不起,我還沒有做過...我的代碼迄今是有點愚蠢我想:( –

回答

3

一種選擇是使用UNION ALL

select starttime timestamp, 1 trigger_id, id 
from yourtable 
union all 
select endtime, 0, id 
from yourtable 
1

如果您正在使用11g和上面:

with tab(ID,StartTime,EndTime) as 
(select 'AAAAAA', '20-Sep-2009 11:08:00', '21-Sep-2009 12:08:54' from dual union all 
select 'BBBBBB', '20-Sep-2009 02:08:33', '21-Sep-2009 12:08:58' from dual union all 
select 'CCCCCC', '20-Sep-2009 10:08:34', '21-Sep-2009 12:08:38' from dual) 
-------------- 
--End of Data 
-------------- 
select timestamp, trigger_id, id 
    from tab 
unpivot (timestamp for trigger_id in (StartTime as '1', EndTime as '0')); 

輸出:

|   TIMESTAMP | TRIGGER_ID |  ID | 
|----------------------|------------|--------| 
| 20-Sep-2009 11:08:00 |   1 | AAAAAA | 
| 21-Sep-2009 12:08:54 |   0 | AAAAAA | 
| 20-Sep-2009 02:08:33 |   1 | BBBBBB | 
| 21-Sep-2009 12:08:58 |   0 | BBBBBB | 
| 20-Sep-2009 10:08:34 |   1 | CCCCCC | 
| 21-Sep-2009 12:08:38 |   0 | CCCCCC |