Maison >base de données >tutoriel mysql >Comment transformer une relation un-à-plusieurs en colonnes distinctes dans Informix SQL ?
Problème :
Pour transformer les données d'un format comme :
id codes 63592 PELL 58640 SUBL 58640 USBL 73571 PELL 73571 USBL 73571 SUBL
dans :
id codes 63592 PELL 58640 SUBL, USBL 73571 PELL, USBL, SUBL
Solution :
L'utilisation d'un agrégat défini par l'utilisateur dans Informix SQL peut y parvenir transformation.
CREATE FUNCTION gc_init(dummy VARCHAR(255)) RETURNING LVARCHAR; RETURN ''; END FUNCTION; CREATE FUNCTION gc_iter(result LVARCHAR, value VARCHAR(255)) RETURNING LVARCHAR; IF result = '' THEN RETURN TRIM(value); ELSE RETURN result || ',' || TRIM(value); END IF; END FUNCTION; CREATE FUNCTION gc_comb(partial1 LVARCHAR, partial2 LVARCHAR) RETURNING LVARCHAR; IF partial1 IS NULL OR partial1 = '' THEN RETURN partial2; ELIF partial2 IS NULL OR partial2 = '' THEN RETURN partial1; ELSE RETURN partial1 || ',' || partial2; END IF; END FUNCTION; CREATE FUNCTION gc_fini(final LVARCHAR) RETURNING LVARCHAR; RETURN final; END FUNCTION; CREATE AGGREGATE group_concat WITH (INIT = gc_init, ITER = gc_iter, COMBINE = gc_comb, FINAL = gc_fini);
Exemple :
Appliquer cet agrégat aux exemples de données avec la requête suivante :
SELECT id, group_concat(codes) FROM anonymous_table GROUP BY id;
Produira la transformation souhaitée. sortie :
58640 SUBL,USBL 63592 PELL 73571 PELL,SUBL,USBL 73572 PELL,SUBL,USBL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!