hei!
Comment puis-je créer une fonction agrégée pour obtenir une liste des valeurs globales. p>
donné: p> je veux p>
3 Réponses :
Vous devez simuler la fonction group_concat de MySQL. P>
check Cet article Pour plus d'informations. p>
J'ai utilisé cet article une fois sur exactement la même chose: p>
http: / /www.simple-Talk.com/sql/t-sql-programmer/concatenating-row-values-in-transact-sql/ P>
J'étais sauté pour créer une fonction agrégée personnalisée comme Somme (). Est-il possible?
Je l'ai trouvé dans votre article. Merci
L'affichage des liens d'article rend cette réponse susceptible de relier la pourriture. Au lieu de cela, veuillez prendre ce que vous avez appris de ce lien et publiez ici à la place.
Solution MS SQL: [Remarque: cette solution ne fonctionne que sur SQL 2005 et plus tard. Question originale n'a pas spécifié la version utilisée.]
SELECT key , STUFF((SELECT ',' + CAST([value] AS nvarchar(max)) FROM <#Table#> WHERE (key = Results.key) FOR XML PATH ('')),1,2,'') AS NameValues FROM <#Table#> Results GROUP BY key
Et la bonne chose à propos de cette solution est que cela ne fait pas exploser si vous avez des caractères XML invalides dans vos sous-chaînes .. Oh whoops, oui ça fait.
Autant que je vois la valeur est juste int, donc ce ne sera pas un problème
Je préfère résoudre le problème quand il s'agit plutôt que d'écrire des solutions génériques GIGS pour répondre à toutes les exigences futures et possibles.
Mon point est de savoir pourquoi choisir la jolie solution qui échoue dans une solution difficile à détecter (je le sais parce que quelqu'un me disait quelle mignon solution c'était et puis j'ai dû la réécrire car elle a échoué de manière complexe) lorsque vous pouvez utiliser Quelque chose n'est pas si mignon qui fonctionne à travers le tableau.