2014-10-10 3 views
1

Допустим, у меня есть столбец со значениями CSV: a,b,c,dВыберите Distinct CSV столбец

У меня есть таблица-функция dbo.Split(@Data varchar,@Delimeter varchar), которая возвращает их в ряды, но не знаю, как это будет применяться здесь.

Так что скажем, я пытаюсь собрать все отдельные значения из одного столбца в несколько строк.

Если я делаю Distinct, я собираюсь получить в конечном итоге:

Column 
------------------------------------- 
b 
a,b,c 
c,d 
d 

Что я хотел бы вернуться в следующем:

Column 
------------------------------------- 
a 
b 
c 
d 

Как мне это сделать?

ответ

2
CREATE TABLE #temp 
    (
    name VARCHAR(10) 
) 

INSERT INTO #temp 
VALUES  ('b'), 
      ('a,b,c'), 
      ('c,d'), 
      ('d') 

SELECT DISTINCT Split.a.value('.', 'VARCHAR(100)') data 
FROM (SELECT Cast ('<M>' + Replace(name, ',', '</M><M>') + '</M>' AS XML) AS Data 
     FROM #temp) AS A 
     CROSS APPLY Data.nodes ('/M') AS Split(a) 
+0

Спасибо, но разве у вас нет решения, которое в меньшей степени ограничивает ресурс сервера? –

+0

@ControlFreak - Проверьте это http://rextester.com/ROAYWA64678 –

Смежные вопросы