2017-06-22 145 views
0

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 

感謝

+1

邏輯爲您的分組並不清楚.. – scaisEdge

+1

對不起,我編輯的問題,增加了一些更詳細 –

+0

我沒有看到任何細節..你沒有解釋的邏輯分組.. – scaisEdge

回答

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; 
+0

這是一些甜蜜的SQL魔術:-) SQL測試自己動手。現在可以報廢我的方法... –

+0

@ Thorsten-Kettner它的作品非常流暢!感謝您的及時幫助。非常感謝您。非常好。您所有的人都是主人,我從來沒有意識到訂單欄的重要性。我剛剛插上了您的解決方案,但會在晚上通過它來完全理解它。 –

+0

特別感謝所有其他參與者讓我意識到我錯過了什麼!再次感謝! –