2015-07-08 2 views
0

Я хочу иметь SELECT, который как часть списка полей возврата также будет содержать csv из нескольких значений из другой таблицы.SELECT с полученным значением csv

У меня есть код работает, чтобы определить CSV здесь: SQL Server 2008 Rows to 1 CSV field

Но я не в состоянии получить работу JOIN со значением CSV, или получить в поле Идентификатор полученных значений CSV.

Мои две таблицы:

job (id,title,location) 
skills(id, jobID, skillName, listOrder) 

Я хочу, чтобы сделать выбор * от работы с каждой записи задания, имеющие свои собственные полученные навыки

в основном результат должен быть: 1, дБА, техасский, [SQL, XML, RDP] < - навыки JobID = 1

+0

Возможный дубликат [Есть ли способ создать функцию SQL Server для «объединения» нескольких строк из подзапроса в одно поле с разделителями?] (Http://stackoverflow.com/questions/6899/is-there- а-путь к Create-A-SQL-сервера, функция-к-нарисуй несколько-строк-с-а-су) – OzrenTkalcecKrznaric

ответ

1

Это, кажется, делать то, что вы ищете:

SELECT 
    J.id 
    , J.title 
    , J.location 
    , '[' + STUFF ((SELECT ',' + S.skillName 
        FROM Skills S 
        WHERE 
        J.id = S.jobID 
        ORDER BY S.listOrder 
        FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)') 
       , 1, 1, '') + ']' skillSet 
FROM Job J 
GROUP BY J.id, J.title, J.location 
; 

См. Его в действии: SQL Fiddle

Прокомментируйте, если и для этого требуется настройка/дальнейшие детали.

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