1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| WITH ventes AS (SELECT 1 id_vente, 200901 id_aaaamm, 'Cli1' code_client FROM DUAL UNION ALL
SELECT 2 id_vente, 200901 id_aaaamm, 'Cli2' code_client FROM DUAL UNION ALL
SELECT 3 id_vente, 200902 id_aaaamm, 'Cli2' code_client FROM DUAL UNION ALL
SELECT 4 id_vente, 200903 id_aaaamm, 'Cli1' code_client FROM DUAL UNION ALL
SELECT 5 id_vente, 200904 id_aaaamm, 'Cli3' code_client FROM DUAL )
SELECT v2.annee,
v2.id_aaaamm,
SUM (v2.nb_nvx_clients) OVER (PARTITION BY v2.annee ORDER BY v2.id_aaaamm)
FROM (SELECT v1.annee,
v1.id_aaaamm,
SUM (DECODE (id_aaaamm, first_id_aaaamm, 1, 0)) nb_nvx_clients
FROM (SELECT DISTINCT id_aaaamm,
code_client,
TO_NUMBER (SUBSTR (id_aaaamm,1,4)) annee,
MIN (id_aaaamm) OVER (PARTITION BY SUBSTR(id_aaaamm,1,4), code_client) first_id_aaaamm
FROM ventes) v1
GROUP BY v1.annee,
v1.id_aaaamm )v2; |
Partager