PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 14/09/2022 10:51:27

akanzari
Membre

Inner join à string join

J'ai la requête ci-dessous:


SELECT 
CCTP.C5NCCT AS "Numéro",
CCTSPEP.CBCSPE AS "Spécialité"
FROM FIC.CCTP CCTP
LEFT JOIN FIC.CCTSPEP CCTSPEP ON CCTSPEP.CBNCCT = CCTP.C5NCCT;

qui retourne ce résultat

|Numéro   |Spécialité|
|--------|---------|
| 1       |01        |
| 1       |24        |
| 1       |25        |
| 2       |02        |
| 2       |06        |
| 3       |11        |

Je souhaite mettre à jour la requête pour obtenir un résultat similaire à celui-ci

|Numéro   |Spécialité  |
|---------|------------|
| 1       |01, 24, 25  |
| 2       |02, 06      |
| 3       |11          |

Hors ligne

#2 14/09/2022 11:29:24

rjuju
Administrateur

Re : Inner join à string join

Vous devez utiliser une aggrégation, et à priori l'aggrégat string_agg (https://www.postgresql.org/docs/current/functions-aggregate.html ).

Hors ligne

#3 14/09/2022 12:02:41

akanzari
Membre

Re : Inner join à string join

SELECT
    CCTP.C5NCCT AS "Numéro",
    STRING_AGG(cast(CCTSPEP.CBCSPE as nvarchar(100)), ',') AS "Spécialité"
FROM
    FIC.CCTP CCTP
INNER JOIN FIC.CCTSPEP CCTSPEP ON CCTSPEP.CBNCCT = CCTP.C5NCCT;

J'ai cette erreur: SQL Error [42704]: [SQL0204] STRING_AGG de type *N dans *LIBL non trouvé.

Dernière modification par akanzari (14/09/2022 12:12:43)

Hors ligne

#4 14/09/2022 13:02:06

rjuju
Administrateur

Re : Inner join à string join

Ça ne ressemble pas à une erreur postgres, quelle base de données utilisez-vous ?


Il manque la définition de l'aggrégation, mais à priori ce que vous utilisez se plaint pour autre chose.

Hors ligne

Pied de page des forums