Existe-t-il une solution équivalente à la fonction GROUP_CONCAT en SQL sous DB2 ?
Existe-t-il une solution équivalente à la fonction GROUP_CONCAT en SQL sous DB2 ?
ça fait quoi en principe GROUP_CONCAT ?
DB2 ? Laquelle, sur quelle plate-forme ?
Plateforme AS 400. Group_concat ça concatène les valeurs d'une colonnes après un group by (). http://dev.mysql.com/doc/refman/5.0/...functions.html
GROUP_CONCAT n'existe pas sous DB2/400, c'est du MySQL pur et dur.
On peut toutefois s'en sortir en écrivant sa propre fonction SQL.
Peux-tu développer stp ?
J'ai posé la question aux Gourous iSeries/AS400.
Birgitta Hauser m'a proposé de créer l'UDF suivante :
puis de l'appeler ainsi
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 CREATE FUNCTION MonSchema/MaFonction ( PARCol2 CHAR(5) ) RETURNS VARCHAR(1024) LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA CALLED ON NULL INPUT DISALLOW PARALLEL BEGIN DECLARE ReturnVal VARCHAR(1024) NOT NULL DEFAULT ''; FOR CsrC1 AS C1 CURSOR FOR SELECT MaCol1 FROM MaTable WHERE MaCol2 = ParCol2 DO SET ReturnVal = ReturnVal Concat CsrC1.MaCol1; END FOR; RETURN LTRIM(ReturnVal); END ;
On obtient alors l'équivalent du GROUP_CONCAT de MySQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT MaCol1, MaFonction(MaCol2) FROM MaTable GROUP BY MaCol1, MaFonction(MaCol2)
La première colonne affiche le contenu de MaCol1 qui est la zone sur laquelle s'effectue le GROUP BY.
Les différentes valeurs de MaCol2 ayant la colonne MaCol1 identique sont placées à la queue leu leu dans la deuxième colonne de la requête.
Partager