0

我的表中有一对相关的行。

如何合并这些行:

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
4

1 回答 1

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
于 2012-10-11T08:35:15.977 回答