下面是其與發佈樣品數據和輸出工作的解決方案。它分兩步工作:連接每行的列,然後使用LISTAGG()來彙總所有行,以組合col1, col2
。
SQL> with cte as (
2 select col1
3 , col2
4 , 'col3:' || col3 ||' col4:' || col4 as col3col4
5 , row_number() over (partition by col1, col2 order by col1, col2) as rn
6 from input_table
7 )
8 select col1
9 , col2
10 , listagg(col3col4, ' ') within group (order by rn) as concat_output
11 from cte
12 group by col1, col2;
COL1 COL2 CONCAT_OUTPUT
---- ---- ----------------------------------------
A B col3:2 col4:TEXT col3:1 col4:HELLO
C X col3:5 col4:DEMO
SQL>
來源
2017-08-26 08:42:53
APC
你是什麼意思的'過濾列是相同的列?您的示例中哪些列是「過濾列」,哪些列是「相同」,哪些列是「不同」,爲什麼?請解釋。 – krokodilko
這裏col1列和col2列將被匹配,因爲col1 = A和col2 = B匹配3個列中的2個記錄。 – Bisu
因此,您希望首先檢查所有可能的列組合(2列或更多列):'(col1 ,(col1,col3),......(col2,col4)...(col1,col2,col3),(col1,col2,col4).....',如果存在爲給定的列組合重複記錄(超過1條記錄),然後爲這些重複的記錄和組合創建一個包含數據的平面文件。我是對的還是myaybe我誤解了一些東西? – krokodilko