我的表中有一对相关的行。
如何合并这些行:
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对中)? e.g:
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 :(得分: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