Oracle按列中的数据值分组
Helo,我需要根据数据值进行分组。当COl1中有100个时,将启动一个新组,并且需要填写Col2中的值。 有被另一列COL3订购(貌似有些序列..) 下面输出shown.I是甲骨文12C版本1Oracle按列中的数据值分组
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
感谢
好了,现在有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;
这是一些甜蜜的SQL魔术:-) SQL测试自己动手。现在可以报废我的方法... –
@ Thorsten-Kettner它的作品非常流畅!感谢您的及时帮助。非常感谢您。非常好。您所有的人都是主人,我从来没有意识到订单栏的重要性。我刚刚插上了您的解决方案,但会在晚上通过它来完全理解它。 –
特别感谢所有其他参与者让我意识到我错过了什么!再次感谢! –
逻辑为您的分组并不清楚.. – scaisEdge
对不起,我编辑的问题,增加了一些更详细 –
我没有看到任何细节..你没有解释的逻辑分组.. – scaisEdge