IF OBJECT_ID('master..test') is not null Drop table test
CREATE TABLE test (ID INTEGER, NAME VARCHAR (50), VALUE INTEGER);
INSERT INTO test VALUES (1, 'A', 4);
INSERT INTO test VALUES (1, 'A', 5);
INSERT INTO test VALUES (1, 'B', 8);
INSERT INTO test VALUES (2, 'C', 9);
select distinct NAME , LIST = Replace(Replace(Stuff((select ',', +Value from test where name = _a.name for xml path('')), 1,1,''),'<Value>', ''),'</Value>','') from test _a order by 1 desc
Mein Tabellenname ist zu testen und für Verketten Ich benutze die für XML Path ('') Syntax. Die Stuff-Funktion fügt eine Zeichenfolge in eine andere Zeichenfolge ein. Es löscht eine spezifizierte Länge von Zeichen in der ersten Zeichenfolge an der Startposition und fügt dann die zweite Zeichenfolge in der ersten Zeichenfolge an der Startposition ein.
STUFF Funktionen sieht wie folgt aus: STUFF (character_expression, Start, Länge, character_expression)
character_expression ein Ausdruck von Zeichendaten. character_expression kann eine Konstante, eine Variable oder eine Spalte von Zeichen- oder Binärdaten sein.
Start Ist ein ganzzahliger Wert, der den Speicherort zum Löschen und Einfügen angibt. Wenn Start oder Länge negativ ist, wird eine Nullzeichenfolge zurückgegeben. Wenn start länger als der erste Zeichenausdruck ist, wird eine Nullzeichenfolge zurückgegeben. Start kann vom Typ bigint sein.
Länge Eine Ganzzahl, die die Anzahl der zu löschenden Zeichen angibt. Wenn die Länge länger ist als der erste Zeichenausdruck, wird bis zum letzten Zeichen im letzten Zeichenausdruck gelöscht. Länge kann vom Typ bigint sein.
Dies gibt nicht, wonach Biswa gefragt hat. – eisberg
danke sami das ist, was ich für @biswa frage – Biswa
Ich denke, es ist wichtig zu warnen, dass die Verwendung nur einer Art von Separator könnte nachteilig sein. Ich schlage vor, das "Name" Trennzeichen als Semikolon (;) zu machen, und das Trennzeichen kann als Komma (,) bleiben. –