J'ai quelques donnéesrequête TSQL à concaténer et de supprimer le préfixe commun
id ref
== ==========
1 3536757616
1 3536757617
1 3536757618
et que vous souhaitez obtenir le résultat
1 3536757616/7/8
donc essentiellement les données sont agrégées sur id, avec les refs concaténés, séparés par une barre oblique «/», mais avec un préfixe commun supprimé si les données ont été comme
id ref
== ==========
2 3536757628
2 3536757629
2 3536757630
je ne voudrais pour obtenir le résultat
2 3536757629/28/30
Je sais que je peux simplement concaténer les refs en utilisant
SELECT distinct
id,
stuff ((SELECT
'/ ' + ref
FROM
tableA tableA_1
where tableA_1.id = tableA_2.id
FOR XML PATH ('')) , 1 , 2 , '')
from TableA tableA_2
pour donner
1 3536757616/ 3536757617/ 3536757618
2 3536757628/ 3536757629/ 3536757630
mais il est le bit qui supprime l'élément commun que je suis après .....
Code pour les données de test:
create table tableA (id int, ref varchar(50))
insert into tableA
select 1, 3536757616
union select 1, 3536757617
union select 1, 3536757618
union select 2, 3536757628
union select 2, 3536757629
union select 2, 3536757630
+1. J'ai mal à la tête en essayant d'envelopper mon cerveau mais c'est vraiment une très bonne façon de le faire. Beaucoup plus que les deux (actuellement) autres réponses (y compris la mienne). –
@Lieven: sera le sujet de la poste de demain dans mon blog – Quassnoi
il suffit d'ajouter id à la sélection finale et c'est parfait! –