SQL Query将单行扩展为多行以获取每日值

时间:2011-08-25 23:22:14

标签: sql oracle11g

希望是一个简单的。我正在研究Oracle 11G并且正在努力解决日常数据和样本(基于事件的)数据的问题。给出两个表:

T1:
(
object_id int,
status varchar,
effectivedate date)

T2:
(
object_id int
daytime date, 
volume number
)

Data: 
t1
(
{1, 'Producing', 1-Jan-2011}
{1, 'Shutin', 5-Jan-2011}
)

t2
(
{1, 1-Jan-2011, 2.1}
{1, 2-Jan-2011, 241.1},
{1, 3-Jan-2011, 2.5},
{1, 4-Jan-2011, 2.1},
{1, 5-Jan-2011, 2.2},
{1, 6-Jan-2011, 2.3}
)

我想要一个产生以下输出的查询:

object_id status     daytime     volume
1         Producing  1-Jan-2011  2.1

1         Producing  2-Jan-2011  241.1
...

1         Shutin     5-Jan-2011  2.2
1         Shutin     6-Jan-2011  2.3

有人可以帮我解决SQL问题吗? T2将始终具有每天的值,而T1仅存储状态更改。

1 个答案:

答案 0 :(得分:0)

那么,您是否只希望daytime成为状态更改的日子?在这种情况下,一个简单的连接就可以了:

select object_id, status, daytime, volume
from t2 left join t1
on (t1.object_id=t2.object_id and t1.effectivedate=t2.daytime)
order by 1,3;