Bonjour,
Ce message est pour partager avec vous la méthode Tabibitosan, cette méthode consiste à grouper les données selon différents critères.
Exemple :
On veut créer des groupes de prêts (Loan) qui ont des numéros de prêt consécutifs (les numéros de prêt (loan_id) 1, 2,3 forment le groupe 1, le 7 forme le groupe 2, les 10 et le 11 forment le groupe 3)
Le contenu de la table
La requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 WITH loan AS (SELECT 1 loan_id, 'xxx' bn FROM DUAL UNION ALL SELECT 2 loan_id, NULL borrower_name FROM DUAL UNION ALL SELECT 3 loan_id, NULL borrower_name FROM DUAL UNION ALL SELECT 7 loan_id, 'ac' borrower_name FROM DUAL UNION ALL SELECT 10 loan_id, 'ac' borrower_name FROM DUAL UNION ALL SELECT 11 loan_id, NULL borrower_name FROM DUAL)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT loan_id, bn, 'G' || DENSE_RANK () OVER (ORDER BY makegroup) grp_id FROM (SELECT loan_id, bn, loan_id - ROW_NUMBER () OVER (ORDER BY loan_id) AS makegroup FROM loan) ORDER BY loan_id;
La demonstration:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32
33
34
35
36
37
38 12:24:38 Scott@WEBDEVP>WITH loan AS 12:24:41 2 (SELECT 1 loan_id, 'xxx' bn 12:24:41 3 FROM DUAL 12:24:41 4 UNION ALL 12:24:41 5 SELECT 2 loan_id, NULL borrower_name 12:24:41 6 FROM DUAL 12:24:41 7 UNION ALL 12:24:41 8 SELECT 3 loan_id, NULL borrower_name 12:24:41 9 FROM DUAL 12:24:41 10 UNION ALL 12:24:41 11 SELECT 7 loan_id, 'ac' borrower_name 12:24:41 12 FROM DUAL 12:24:41 13 UNION ALL 12:24:41 14 SELECT 10 loan_id, 'ac' borrower_name 12:24:41 15 FROM DUAL 12:24:41 16 UNION ALL 12:24:41 17 SELECT 11 loan_id, NULL borrower_name 12:24:41 18 FROM DUAL) 12:24:41 19 SELECT loan_id, bn, 'G' || DENSE_RANK () OVER (ORDER BY makegroup) grp_id 12:24:41 20 FROM (SELECT loan_id, bn, 12:24:41 21 loan_id - ROW_NUMBER () OVER (ORDER BY loan_id) AS makegroup 12:24:41 22 FROM loan) 12:24:41 23 ORDER BY loan_id; LOAN_ID BN GRP_ID ---------- --- ----------------------------------------- 1 xxx G1 2 G1 3 G1 7 ac G2 10 ac G3 11 G3 6 ligne(s) sélectionnée(s). 12:24:43 Scott@WEBDEVP>
Pour plus ample informations sur la méthode Tabibitosan, Veuillez consulter le lien suivant:
https://forums.oracle.com/forums/thr...art=0&tstart=0
Cordialement Salim.
Partager