我的主题可能不是最好的,但这就是我想要做的事情:
我有一张包含开始和结束时间的表格:
Event Start End
-------------------------
event1 2:30 PM 3:00 PM
event2 3:05 PM 3:30 PM
event3 2:45 PM 3:10 PM
我想编写一个SQL命令(在Oracle中),这将导致:
Event Type Time
-------------------------
event1 START 2:30 PM
event3 START 2:45 PM
event1 END 3:00 PM
event2 START 3:05 PM
event3 END 3:10 PM
event2 END 3:30 PM
基本上,我需要订购时间并知道它的事件,以及它是开始还是结束时间。我有一种感觉,这可以通过一些奇特的SQL来完成,但我很难想到如何做到这一点。
谢谢!
答案 0 :(得分:7)
没什么特别的,但简单的UNION
就足够了
SELECT Event, 'START', Start AS Time
FROM ATable
UNION ALL
SELECT Event, 'END', End AS Time
FROM ATable
ORDER BY
Time
如果您想更加喜欢,UNPIVOT
是另一种选择
SELECT Event, Type, Time
FROM ATable
UNPIVOT (Time FOR Type IN (Start, [End])) AS unpvt
ORDER BY
Time