Sql Oracle查询将行信息透视到列

Sql Oracle查询将行信息透视到列,sql,oracle,Sql,Oracle,我有一个表,用于存储分支机构的开门和关门时间信息,如下所示: LOCATION DAYOFTHEWEEK OPENORCLOSE TIME ---------- ------------ ----------- ---------- AUSTIN SUN Open 1730 AUSTIN MON Close 200 AUSTIN MON Open

我有一个表,用于存储分支机构的开门和关门时间信息,如下所示:

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 位置周开放日或关闭时间 ---------- ------------ ----------- ---------- 奥斯汀太阳公开赛1730 奥斯汀周一收盘价200 奥斯汀周一公开赛830 奥斯汀星期二近200 奥斯汀星期二公开赛830 奥斯汀200岁结婚 奥斯汀星期三公开赛830 奥斯汀周四收盘价200 奥斯汀星期四公开赛830 奥斯汀周五收盘价200 奥斯汀星期五公开赛830 奥斯汀星期五1730 正如您所见,并非所有的日子都有一个开放/关闭的日子,一天可以有多个开放/关闭时间,原因是分行可能在前一天开放,上夜班,然后在第二天关闭。在本例中,奥斯汀分行周日下午5:30开门,周一凌晨2:00关门,然后在8:30重新开门,一直工作到第二天凌晨2:00。星期五下午5:30关门,星期六休息,星期天再开门,重复同样的周期

我的问题是,是否可以单独使用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 位置星期一开放时间关闭时间 ---------- ------------ ---------- ---------- 奥斯汀太阳报1730零 奥斯汀200 奥斯汀周一830空 奥斯汀星期二200 奥斯汀星期二830零 奥斯汀200 奥斯汀星期三830零 奥斯汀图尔200 奥斯汀星期四830零 奥斯汀星期五空200 奥斯汀星期五830 1730 null只是一个占位符,任何像-1这样的值,或者任何其他值都可以。在这种特殊情况下,时间是一个int值,表示时间等价(200表示凌晨2:00,1730表示17:30,等等)


谢谢

我想,这会解决你的问题

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

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