Tous les produits
Search
Centre de documentation

MaxCompute:Fusionner plusieurs lignes de données en une seule ligne

Dernière mise à jour :Aug 10, 2026

Utilisez MaxCompute SQL pour fusionner les valeurs de plusieurs lignes en une seule. Deux approches couvrent la majorité des cas d'usage :

  • Concaténation de chaînes : utilisez wm_concat pour regrouper les valeurs de plusieurs lignes en une seule chaîne séparée par des virgules, selon un regroupement défini par une colonne.

  • Agrégation conditionnelle : combinez CASE WHEN avec SUM afin de compter ou d'additionner des valeurs par catégorie sur plusieurs lignes. Il s'agit de l'approche SQL standard pour transformer un tableau étroit en tableau large.

Données d'exemple

Les exemples de cette rubrique s'appuient sur une table nommée students :

class gender name
1 M LiLei
1 F HanMM
1 M Jim
1 F HanMM
2 F Kate
2 M Peter

Concaténer les valeurs de lignes dans une chaîne

La fonction wm_concat agrège les valeurs de plusieurs lignes en une seule chaîne, avec un regroupement par colonne.

Syntaxe :

wm_concat([DISTINCT] '<delimiter>', <column>)
Paramètre Obligatoire Description
DISTINCT Non Supprime les doublons avant la concaténation.
<delimiter> Oui Chaîne de séparation insérée entre les valeurs concaténées.
<column> Oui Colonne dont les valeurs sont concaténées.

Pour consulter la référence complète de la fonction, reportez-vous à la documentation Fonctions d'agrégation.

Concaténation de base

Regroupez les noms par classe en concaténant toutes les valeurs avec une virgule :

SELECT class, wm_concat(',', name) AS names
FROM students
GROUP BY class;
class names
1 LiLei,HanMM,Jim,HanMM
2 Kate,Peter

Concaténation avec déduplication

Ajoutez le mot-clé DISTINCT pour supprimer les valeurs en double avant la concaténation :

SELECT class, wm_concat(DISTINCT ',', name) AS names
FROM students
GROUP BY class;
class names
1 LiLei,HanMM,Jim
2 Kate,Peter

Compter les valeurs par catégorie (agrégation conditionnelle)

Combinez CASE WHEN et SUM pour faire pivoter les valeurs des lignes vers des colonnes. Cette méthode permet de compter le nombre de lignes répondant à chaque condition pour chaque groupe.

L'instruction suivante compte le nombre d'hommes et de femmes dans chaque classe :

SELECT
  class,
  SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS cnt_m,
  SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS cnt_f
FROM students
GROUP BY class;
class cnt_m cnt_f
1 2 2
2 1 1

Pour ajouter davantage de catégories, incluez d'autres expressions SUM(CASE WHEN ...) dans la clause SELECT.