Oracle按列中的数据值进行分组

时间:2017-06-22 14:56:49

标签: sql oracle

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

由于

1 个答案:

答案 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;