2012-10-11 96 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