Bonjour voila j'ai une table BILAN qui contient différente matiere avec des eleves j'aimerai faire un pivot pour avoir un resultat qui ressemble à çà :
1 2 3
| NOM MATIERE1 MATIERE2 ETC..
ELEVE1 12 13
ELEVE2 14 11 |
Voici ma procédure stockée pour le moment :
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
|
CREATE OR REPLACE PROCEDURE pivotBilan AS
v_matiere VARCHAR2(25);
v_req_deb VARCHAR2(50);
v_req_fin VARCHAR(50);
v_req VARCHAR2(300);
v_req_final VARCHAR(500);
v_long NUMBER;
CURSOR monCurseur IS SELECT DISTINCT matiere FROM BILAN ORDER BY matiere
BEGIN
OPEN monCurseur;
v_long:=0;
v_req_deb := 'SELECT nom,';
v_req_fin := 'FROM bilan GROUP BY nom';
FETCH monCurseur INTO v_matiere;
WHILE(monCurseur%FOUND)
LOOP
v_req:= CONCAT(v_req, "max(decode(matiere,'"v_matiere"',moyenne)),");
FETCH monCurseur INTO v_matiere;
END LOOP;
CLOSE monCurseur;
v_long:=LENGTH(v_req);
v_req:=SUBSTR(v_req,v_long-1,0);
v_req_final := v_req_deb || v_req || v_req_fin;
EXECUTE IMMEDIATE v_req_final;
END;
/ |
çà me retourne l'erreur suivante :
1 2 3 4 5 6
|
ERREUR à la ligne 13 : PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants :
constant exception
table LONG_ double ref char
time timestamp interval date binary national character nchar |
la ligne 13 est :
v_req_fin := 'FROM bilan GROUP BY nom';
Je vous remercie par avance pour votre aide !
Partager