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
Il mio nome della tabella è di test, e per concatination uso il Per XML Path ('' sintassi. La funzione stuff inserisce una stringa in un'altra stringa. Elimina una lunghezza specificata di caratteri nella prima stringa nella posizione iniziale e quindi inserisce la seconda stringa nella prima stringa nella posizione iniziale.
funzioni roba sembra come questo: STUFF (character_expression, inizio, lunghezza, character_expression)
character_expression è espressione di dati di caratteri. character_expression può essere una costante, una variabile o una colonna di carattere o di dati binari.
start È un valore intero che specifica la posizione in cui iniziare l'eliminazione e l'inserimento. Se start o length è negativo, viene restituita una stringa nulla. Se start è più lungo del primo character_expression, viene restituita una stringa nulla. start può essere di tipo bigint.
lunghezza È un numero intero che specifica il numero di caratteri da eliminare. Se la lunghezza è più lunga della prima character_expression, l'eliminazione di si verifica fino all'ultimo carattere nell'ultimo carattere_espressione. la lunghezza può essere di tipo bigint.
Questo non dà ciò che Biswa ha chiesto. – eisberg
grazie sami, questo è quello che sto chiedendo @biswa – Biswa
Penso che sia importante avvertire i popoli che l'uso di un solo tipo di separatore potrebbe essere svantaggioso. Suggerisco di fare il separatore "nome" come punto e virgola (;), e il separatore dei valori può rimanere come virgola (,) –