2017-02-17 1 views
2

У меня есть таблица с двумя столбцами, какОбъединить множество строк в одной текстовой строки с группой

VENDOR_NAME DIRECTORY_NAME 
DL_101Records .ssh 
DL_101Records ADHOC 
DL_101Records ARCHIVED 
DL_101Records INBOUND 
DL_101Records OUTBOUND 
DL_101Records PROCESSED 
DL_101Records pub 
DL_101Records TAKEDOW 

N

Есть простой способ превратить это в одну строку, как

VENDOR_NAME DIRECTORY_NAME 
DL_101Records .SSH ,ADHOC ,ARCHIVED ,INBOUND ,OUTBOUND ,PROCESSED ,PUB ,TAKEDOWN 
+1

перейдите по этой ссылке http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string –

ответ

0
SELECT VENDOR_NAME, 
     DIRECTORY_NAME = STUFF(
          (
           SELECT ', '+DIRECTORY_NAME AS [text()] 
           FROM _table AS t 
           WHERE t.VENDOR_NAME = tt.VENDOR_NAME 
           ORDER BY t.DIRECTORY_NAME 
           FOR XML PATH('') 
          ), 1, 2, '') 
FROM _table tt 
GROUP BY VENDOR_NAME; 
+0

-Спасибо. он работал –

+0

Как я могу получить DIRECTORY_NAME в разделе Order? –

+0

@ MidhunCM 'ORDER BY' добавлен – anatol

1

Попробуйте это,

DECLARE @TEMP VARCHAR(MAX)=''; 
SELECT @[email protected]+DIRECTORY_NAME+', ' FROM YOURTABLE 
SELECT VENDOR_NAME,@TEMP FROM YOURTABLE 
GROUP BY VENDOR_NAME