Helo,我需要根据数据值进行分组。当COl1中有100个新组启动时,我需要填充Col2中的值。 有另一列col3排序(看起来像一些序列..) 显示下面的输出。我在Oracle 12C第1版
上COl1 Col2 Col3
----- ----- -----
100 ABC inc. 1
201 Z1 2
201 Z2 3
301 X1 4
100 PQR inc. 5
201 C1 6
301 D1 7
201 S1 8
100 XYZ inc. 9
201 D1 10
Output :
Col1 COl2
---- -----
ABC inc. Z1
ABC inc. Z2
ABC inc. X1
PQR inc. C1
PQR inc. D1
PQR inc. S1
XYZ inc. D1
由于
答案 0 :(得分:3)
好的,现在订单有col3
:计算每行col1 = 100
的出现次数。此计数可用作组密钥。
with data as
(
select
col1, col2, col3, count(case when col1 = 100 then 1 end) over (order by col3) as grp
from mytable
)
select master.col2 as col1, slave.col2 as col2
from (select * from data where col1 = 100) master
join (select * from data where col1 <> 100) slave using(grp)
order by grp, slave.col3;