2010-12-12 55 views

Répondre

3

Fonction d'agrégation pour SQL Server qui produit une liste de valeurs séparées par des virgules.

Title 
----------------- 
The Hobbit 
The Two Towers  --> The Hobbit, The Two Towers, Leaf by Niggle 
Leaf by Niggle 

Voici mon implémentation: A SQL CLR user-defined aggregate - notes on creating and debugging

+0

Très utile. J'ai ça aussi. Je l'ai appelé à CSV, mais je n'aime pas vraiment ce nom. Qu'as-tu appelé le tien? De meilleures idées? –

+0

@PAUL Mansour J'ai nommé le mien 'Concat' (abréviation de * concatenate *), mais ce n'est pas un nom parfait non plus. –

+1

SQL Server présente des performances de concaténation de chaînes intéressantes. Voici quelques tests de performances entre le style SQL select @var = @var + column et un agrégat défini par l'utilisateur à l'aide d'un .NET 'StringBuilder': [graphs] (http://imgur.com/a/MRcha) basé sur SQL la concat est considérablement plus lente une fois que la longueur totale de la chaîne dépasse 500k caractères. – geofftnz

1

Oui. Dans Oracle, j'ai implémenté une sorte de group_concat car il n'est pas disponible dans Oracle. J'ai fait quelques versions différentes qui font une concaténation simple avec des chaînes délimitant les virgules. Un autre fait la même chose, seulement trié. Et il y en a un autre qui n'utilise pas de virgule, mais un caractère spécial pour que les résultats puissent être traités plus facilement lorsque les valeurs elles-mêmes contiennent des virgules.

1
  1. Moyenne pondérée

  2. PercentAcross - C'est la somme de X où une condition est vraie, divisée par la somme de X.