我有一个表格,用于存储有关分支的开启和关闭时间的信息,如下所示:
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: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
null只是一个占位符,任何值都是-1,或者其他什么也可以。在这种特殊情况下的时间是一个int值,表示时间等值(上午2:00为200,17:30为17:30等)
谢谢!
答案 0 :(得分:0)
我认为,这将解决您的问题
select location,dayoftheweek,
case openorclose when 'Open' then time end "OPENSTATUS",
case openorclose when 'Close' then time end "CLOSESTATUS" from YOUR_TABLE;
答案 1 :(得分:0)
试试这个:
select location,dayofweek,
case when openorclose = 'Open' then time end as OpenTime,
case when openorclose = 'CLOSE' then time end as CloseTime
from TableName;