2010-12-12 8 views

Antwort

3

Eine Aggregatfunktion für SQL Server, die eine durch Kommas getrennte Liste von Werten erzeugt.

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

Hier ist meine Implementierung: A SQL CLR user-defined aggregate - notes on creating and debugging

+0

Sehr nützlich. Ich habe das auch. Ich habe es CSV genannt, aber ich mag diesen Namen nicht wirklich. Wie hast du deine genannt? Irgendwelche besseren Ideen? –

+0

@PAUL Mansour Ich habe meine 'Concat' genannt (kurz für * concatenate *), aber es ist auch kein perfekter Name. –

+1

SQL Server verfügt über einige interessante String-Verkettungsleistung. Hier sind einige Performancetests zwischen 'select @var = @var + column' style SQL und einem benutzerdefinierten Aggregat mit einem .NET' StringBuilder': [graphs] (http://imgur.com/a/MRcha) SQL-basiert concat wird dramatisch langsamer, sobald die gesamte Stringlänge 500k Zeichen überschreitet. – geofftnz

1

Ja. In Oracle habe ich eine Art group_concat implementiert, weil es in Oracle nicht verfügbar ist. Ich habe ein paar verschiedene Versionen gemacht, die ein einfaches Concat mit Komma-begrenzenden Strings machen. Ein anderer macht das selbe, nur sortiert. Und es gibt noch eine andere, die kein Komma verwendet, sondern ein Sonderzeichen, damit die Ergebnisse leichter verarbeitet werden können, wenn die Werte selbst auch Kommas enthalten.

1
  1. Weighted Average

  2. PercentAcross - Dies ist die Summe von X ist, wo eine Bedingung erfüllt ist, durch die Summe von X geteilt

Verwandte Themen