2012-10-11 71 views
0

我的表中有一对相关的行。Oracle:合并两行

如何合并这些行:

date       col1 col2 
2012-09-11 13:28:21.0000000 A 50 
2012-09-11 13:28:21.0000000 A -50 

接到一行

date       col1 col2 col3 
2012-09-11 13:28:21.0000000 A 50 -50 

如果可以有两个日期(约一秒之间的微小差异,它在100 1的配对仅发生)?例如:

2012-09-11 13:28:21.0000000 
2012-09-11 13:28:22.0000000 

或更差的情况下,一个第二变化整分钟:

2012-09-11 13:28:59.0000000 
2012-09-11 13:29:00.0000000 

更新(串列):

如何与附加COL3与合并相同的线字符串值?

date       col1 col2 col4 
2012-09-11 13:28:21.0000000 A 50 abc 
2012-09-11 13:28:21.0000000 A -50 def 

到:

date       col1 col2 col3 col5 col6 
2012-09-11 13:28:21.0000000 A 50 -50 abc def 

,或者:

date       col1 col2 col3 col5 
2012-09-11 13:28:21.0000000 A 50 -50 abc,def 

溶液(字符串)(hkutluays的分机应答):

max(case when col2 > 0 then col4 end) col5 
max(case when col2 < 0 then col4 end) col6 
+0

你想要col3上的负值还是只需要col3上的第二个值?如果有超过2行呢? – hkutluay

+0

你真的在使用Oracle ** 8i **吗? *长*已被解除支持。 –

+0

@hkutluay:好的问题,col3中的负值 – gaffcz

回答

1

没有测试,但是可以解决这个问题。

select 
round(sysdate,'MI'),col1, sum(case when col2> 0 then col2 else 0 end) col2, 
sum(case when col2 < 0 then col2 else 0 end) col3 
from table 
group by round(sysdate,'MI'),col1 
+0

非常感谢,我会试试! – gaffcz

+0

我刚刚编辑了col2和col3字段。 – hkutluay

+0

它的工作原理!谢谢 – gaffcz