Bonjour,
Est-il possible d'écrire une requête qui ramènerait les dname en une seule ligne:
ACCOUNTING | RESEARCH | SALES | OPERATION.
C'est à dire un pivot tout bête, j'ai su le faire mais je ne m'en souviens plus.
Je suis en V9.
Merci d'avance.
Bonjour,
Est-il possible d'écrire une requête qui ramènerait les dname en une seule ligne:
ACCOUNTING | RESEARCH | SALES | OPERATION.
C'est à dire un pivot tout bête, j'ai su le faire mais je ne m'en souviens plus.
Je suis en V9.
Merci d'avance.
Voilà le méchanisme le plus basique:
1) D’abord vous avez besoin d’une colonne qui va être le pivot, deptno dans ce cas.
2) Ensuite il faut générer autant des colonnes que nécessaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SQL> Select deptno, dname 2 from dept 3 / DEPTNO DNAME ------ -------------- 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS
3) En fin une fonction de group pour ramener tout sur une seule ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SQL> Select case when deptno = 10 then dname end as col1, 2 case when deptno = 20 then dname end as col2, 3 case when deptno = 30 then dname end as col3, 4 case when deptno = 40 then dname end as col4 5 from dept 6 / COL1 COL2 COL3 COL4 -------------- -------------- -------------- -------------- ACCOUNTING RESEARCH SALES OPERATIONS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SQL> Select Max(case when deptno = 10 then dname end) as col1, 2 Max(case when deptno = 20 then dname end) as col2, 3 Max(case when deptno = 30 then dname end) as col3, 4 Max(case when deptno = 40 then dname end) as col4 5 from dept 6 / COL1 COL2 COL3 COL4 -------------- -------------- -------------- -------------- ACCOUNTING RESEARCH SALES OPERATIONS SQL>
Partager