2013-10-11 73 views
0

我有一個分店有關打開和關閉時間信息的表如下:Oracle查詢樞行信息爲列

 
LOCATION DAYOFTHEWEEK OPENORCLOSE  TIME 
---------- ------------ ----------- ---------- 
AUSTIN   SUN  Open    1730 
AUSTIN   MON  Close    200 
AUSTIN   MON  Open    830 
AUSTIN   TUE  Close    200 
AUSTIN   TUE  Open    830 
AUSTIN   WED  Close    200 
AUSTIN   WED  Open    830 
AUSTIN   THU  Close    200 
AUSTIN   THU  Open    830 
AUSTIN   FRI  Close    200 
AUSTIN   FRI  Open    830 
AUSTIN   FRI  Close    1730 

正如你所看到的,並不是所有的天都有一定的開啓/關閉一天和一天可以有多個開/關時間,原因是分支機構可能打開前一天,進行夜班,然後關閉第二天。在這個例子中,奧斯丁分店星期日下午5點30分開放,星期一凌晨2點結束,然後在8點30分重新開放,直到第二天一直工作到凌晨2點。星期五,他們在下午5點半關閉,星期六休息,然後在週日再次打開,重複相同的循環。

我的問題是,它可以使用SELECT語句獨自返回行,看起來像這樣纔有可能:

 
LOCATION DAYOFTHEWEEK OPENTIME CLOSETIME 
---------- ------------ ---------- ---------- 
AUSTIN   SUN   1730  null  
AUSTIN   MON   null  200 
AUSTIN   MON   830  null 
AUSTIN   TUE   null  200 
AUSTIN   TUE   830  null 
AUSTIN   WED   null  200 
AUSTIN   WED   830  null 
AUSTIN   THU   null  200 
AUSTIN   THU   830  null 
AUSTIN   FRI   null  200 
AUSTIN   FRI   830  1730 

空只是一個佔位符,像-1的任何值,或任何將工作太。在這種特殊情況下的時間是表示時間等價(200凌晨2點,1730 17:30,等等)

感謝int值!

回答

0

我認爲,這將解決您的問題

select location,dayoftheweek, 
     case openorclose when 'Open' then time end "OPENSTATUS", 
     case openorclose when 'Close' then time end "CLOSESTATUS" from YOUR_TABLE; 

LIVE SQLFIDDLE DEMO

0

試試這個:

select location,dayofweek, 
case when openorclose = 'Open' then time end as OpenTime, 
case when openorclose = 'CLOSE' then time end as CloseTime 
from TableName;