2017-11-27 10 views
1

私はこのパズルを解くことができませんでした。私は注文のすべての3番目の追跡番号でlistaggクエリを分割したいと思います。特定のレコード数に対する複数のLISTAGG行

Order Tracking 
1  123 
1  432 
1  566 
1  867 
1  999 
2  321 
2  742 
2  456 
2  987 

私の現在の出力は一緒に注文あたりの全追跡番号をひとまとめさ

Order Tracking 
1  123, 432, 566, 867, 999 
2  321, 742, 456, 987 

マイ所望の結果は、行当たり3の最大値と最大分割します。

Order Tracking 
1  123, 432, 566 
1  867, 999 
2  321, 742, 456 
2  987 

答えて

0

あなたは、注文の3つのグループを課すことをCTEにここROW_NUMBERを使用することができます。

WITH cte AS (
    SELECT "Order", Tracking, 
     (ROW_NUMBER() OVER (PARTITION BY "Order" ORDER BY Tracking) - 1)/3 AS grp 
    FROM yourTable 
) 

SELECT 
    "Order", 
    LISTAGG(Tracking, ', ') WITHIN GROUP (ORDER BY Tracking) "Tracking" 
FROM cte 
GROUP BY 
    "Order", grp 
ORDER BY 
    "Order", grp; 
関連する問題