1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
WITH src
AS (SELECT 1 ORDER_ID, 1 PRODUIT_ID, 2 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 1 ORDER_ID, 2 PRODUIT_ID, 3 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 2 ORDER_ID, 1 PRODUIT_ID, 2 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 2 ORDER_ID, 2 PRODUIT_ID, 3 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 3 ORDER_ID, 1 PRODUIT_ID, 2 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 4 ORDER_ID, 3 PRODUIT_ID, 20 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 5 ORDER_ID, 12 PRODUIT_ID, 30 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 6 ORDER_ID, 12 PRODUIT_ID, 50 PRODUIT_QUANTITE FROM DUAL
UNION
SELECT 7 ORDER_ID, 12 PRODUIT_ID, 30 PRODUIT_QUANTITE FROM DUAL)
SELECT produit_id
, produit_quantite
, LISTAGG (order_id_to_concat, '-') WITHIN GROUP (ORDER BY produit_id, produit_quantite, order_id_to_concat) ORDER_ID_COMPUTED
FROM ( SELECT a.produit_id, a.produit_quantite, b.order_id order_id_to_concat
FROM src a, src b
WHERE a.produit_id = b.produit_id(+) AND a.produit_quantite = b.produit_quantite(+)
GROUP BY a.produit_id, a.produit_quantite, b.order_id)
GROUP BY produit_id, produit_quantite
ORDER BY 1, 2 |
Partager