Maison > base de données > tutoriel mysql > Comment transformer une relation un-à-plusieurs en colonnes distinctes dans Informix SQL ?

Comment transformer une relation un-à-plusieurs en colonnes distinctes dans Informix SQL ?

Barbara Streisand
Libérer: 2025-01-02 20:02:38
original
1019 Les gens l'ont consulté

How to Transform a One-to-Many Relationship into Separate Columns in Informix SQL?

Comment afficher une relation un-à-plusieurs sous forme de colonnes séparées

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
Copier après la connexion

dans :

id     codes 

63592  PELL
58640  SUBL, USBL
73571  PELL, USBL, SUBL
Copier après la connexion

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);
Copier après la connexion

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;
Copier après la connexion

Produira la transformation souhaitée. sortie :

58640 SUBL,USBL
63592 PELL
73571 PELL,SUBL,USBL
73572 PELL,SUBL,USBL
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal