Ich verwende den Code aus diese MSDN-Seite um ein benutzerdefiniertes Aggregat zur Verkettung von Zeichenketten zu erstellen mit group by's
im SQL-Server. Eine meiner Anforderungen ist, dass die Reihenfolge der verketteten Werte die gleiche ist wie in der Abfrage. Zum Beispiel:
Value Group
1 1
2 1
3 2
4 2
Abfrage verwenden
SELECT
dbo.Concat(tbl.Value) As Concat,
tbl.Group
FROM
(SELECT TOP 1000
tblTest.*
FROM
tblTest
ORDER BY
tblTest.Value) As tbl
GROUP BY
tbl.Group
Würde dazu führen:
Concat Group
"1,2" 1
"3,4" 2
Das Ergebnis scheint immer korrekt und wie erwartet zu sein, aber dann stieß ich auf diese Seite die besagt, dass die Bestellung nicht garantiert ist und dass das Attribut SqlUserDefinedAggregateAttribute.IsInvariantToOrder
ist nur für die zukünftige Verwendung reserviert.
Meine Frage ist also: Ist es richtig anzunehmen, dass die verketteten Werte in der Zeichenfolge in beliebiger Reihenfolge enden können?
Wenn das der Fall ist, warum verwendet der Beispielcode auf der MSDN-Seite die IsInvariantToOrder
Attribut?