Question : Comment agréger efficacement les champs de chaîne dans une requête SQL Server, similaire à la fonction LISTAGG dans d'autres systèmes de base de données ?
Solution :
SQL Server fournit la fonction STRING_AGG
en remplacement équivalent de la fonction LISTAGG. Sa syntaxe est la suivante :
<code class="language-sql">STRING_AGG ( expression, separator ) WITHIN GROUP ( ORDER BY order_expression [ ASC | DESC ] )</code>
expression
: Expression de chaîne à agréger. separator
: Caractère ou chaîne utilisé pour séparer les chaînes agrégées. order_expression
: Expression utilisée pour trier les chaînes agrégées. ASC
signifie ordre croissant, DESC
signifie ordre décroissant. Exemple :
Supposons qu'il existe une table nommée MyTable
contenant deux champs FieldA
et FieldB
. La requête suivante utilise la fonction STRING_AGG
pour agréger les valeurs de FieldB
dans une chaîne séparée par des virgules, regroupées par FieldA
:
<code class="language-sql">SELECT FieldA, STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS AggregatedFieldB FROM MyTable GROUP BY FieldA ORDER BY FieldA;</code>
Résultats attendus :
Cette requête renverra des résultats similaires au format suivant :
<code>FieldA | AggregatedFieldB -------|----------------- 1 | Value1, Value2, Value3 2 | Value4, Value5</code>
Cela montre que la fonction STRING_AGG
concatène avec succès les valeurs FieldA
de chaque groupe FieldB
en une seule chaîne. Notez que les valeurs de la chaîne résultante sont classées selon la clause ORDER BY FieldB
.
En utilisant la fonction STRING_AGG
, vous pouvez facilement implémenter l'agrégation de champs de chaîne dans SQL Server, simplifiant ainsi le traitement des données et la génération de rapports.
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!