希望是一个简单的。我正在研究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仅存储状态更改。
答案 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;