1

有没有办法让 sql 查询返回拆分行。我什至不知道该怎么问。下面有“index_tag”。

select event.name, tb_ev.start_time, tb_ev.end_time
from block as tb_ev,event
where location_id in ( 28522 ) 
and tb_ev.event_id=event.id;

name           | start_time | end_time 
---------------+------------+---------- 
 Register #1   | 06:00:00   | 09:00:00
 Register #2   | 11:00:00   | 12:00:00
 Register #3   | 11:00:00   | 14:00:00

从 3 行到 7 行

 name          | start_time | end_time | index_tag
---------------+------------+-------------------- 
 Register #1   | 06:00:00   | 09:00:00 | 06:00:00
 Register #1   | 06:00:00   | 09:00:00 | 07:00:00
 Register #1   | 06:00:00   | 09:00:00 | 08:00:00
 Register #2   | 11:00:00   | 12:00:00 | 11:00:00
 Register #3   | 11:00:00   | 14:00:00 | 11:00:00
 Register #3   | 11:00:00   | 14:00:00 | 12:00:00
 Register #3   | 11:00:00   | 14:00:00 | 13:00:00
4

1 回答 1

1

尝试这个:

SELECT *, start_time +
          generate_series(0,extract(hour from (end_time - start_time))::int -1)
          * interval '1 hour' as index_tag
FROM block

它有点难看,但它可以工作(generate_series不适用于time. 只有intor timestamp)。

这是SQLFiddle

关于的详细信息generate_series

于 2012-11-28T21:54:31.277 回答