我在Oracle中有下表:
ID Start End
AAAAA 20/08/1999 22:12 21/08/1999 00:50
AAAAA 20/08/1999 23:40 21/08/1999 00:51
BBBBB 20/08/1999 20:40 21/08/1999 00:53
AAAAA 21/08/1999 00:51 21/08/1999 01:16
AAAAA 21/08/1999 00:50 21/08/1999 01:20
BBBBB 20/08/1999 21:42 22/08/1999 00:53
我正在尝试获得此输出
VALUE TIMESTAMP
AAAAA 20/08/1999 22:12
0 21/08/1999 01:20
BBBBB 20/08/1999 20:40
0 22/08/1999 00:53
每个ID的ID都以“开始”的第一个出现,而每个ID的“ ID”以“ End”的最后一个出现。
我为第一个出现使用rownum = 1,但是找不到找到最后一个出现的方法。我尝试使用COUNT(*),但效果不佳。谁能帮我?
到目前为止的代码:
--FIRST ROW ONLY
select a.Start TIMESTAMP,
a.ID VALUE
from MyTable a
WHERE rownum = 1
--END FIRST COLUMN
union all
--LAST ROW COLUMN
select a.End TIMESTAMP,
'0' VALUE
from MyTable a
--where ???????
提前谢谢了!
select VALUE, TIMESTAMP
from (
select min(a.Start) TIMESTAMP,
a.ID VALUE,
a.ID,
1 ORD
from MyTable a
group by a.ID
union all
select max(a.End) TIMESTAMP,
'0' VALUE,
a.ID,
2 ORD
from MyTable a
group by a.ID
)
order by ID, ORD
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句