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

2 つの日付の間にわずかな違いがある場合 (約 1 秒で、100 ペアのうちの 1 つでのみ発生します)。例えば:

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

最悪の場合、1 秒で 1 分が変わります。

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 に答える