Znowu mam trochę problemów z implementacją metody XML PATH łączenia wielu wierszy.

Biorąc pod uwagę następujący serwer SQL temptable:

project    |    NAME    |      display_name
-----------+------------+-------------------
  a         Developer         Amelia     
  a         Developer         Ruby
  a         Administrator     Olivia     
  b         User              Isla    
  b         Developer         Emily   
  c         User              Poppy     
  c         Administrator     Ava    
  c         Administrator     James 

Wynik powinien być:

project    |    NAME        | display_name
-----------+----------------+----------------
  a         Developer         Amelia, Ruby
            Administrator     Olivia

  b         User              Isla    
            Developer         Emily   

  c         User              Poppy     
            Administrator     Ava,James

Czy coś takiego jest nawet możliwe z XML PATH itp.?

0
happenz 19 listopad 2018, 13:16

1 odpowiedź

Najlepsza odpowiedź

Tak, możesz użyć klauzuli FOR XML PATH():

SELECT DISTINCT t.project, t.name, STUFF(t1.display_name, 1, 1, '') AS display_name
FROM table t CROSS APPLY
     (SELECT ', '+t1.display_name 
      FROM table t1
      WHERE t1.project = t.project AND t1.name = t.name
      FOR XML PATH('')
     ) t1(display_name);
1
Yogesh Sharma 19 listopad 2018, 13:22