Создание списка в поле с помощью CAST()

avatar
MacAust
1 июля 2021 в 15:54
23
1
-1

Я пытаюсь создать столбец под названием «навыки», в котором перечислены все навыки, с которыми связан данный человек. По сути, в настоящее время я получаю следующие результаты:

NAME            SKILL

Person A        Programming
Person A        Web Design
Person A        SQL
Person B        Project Management
Person B        Written Communication

И мне нужно получить такие результаты:

NAME            SKILL

Person A        Programming, Web Design, SQL
Person B        Project Management, Written Communication

Вот как сейчас выглядит мой код SQL:

CAST((
    SELECT InterestCodeRoot.Code + ','
    FROM InterestCodeRoot
    WHERE EmployeeInterestCode.CodeIdent = InterestCodeRoot.CodeIdent
    FOR XML PATH(''))as varchar(max))
    AS [Skill ID],

Я также пробовал использовать STUFF() и GROUP_CONCAT(), но ни один из вариантов не сработал. Это самое близкое, что я получил. Будем признательны за любые советы или помощь.

Источник
Isaac
1 июля 2021 в 15:55
0

Какую версию SQL Server вы используете?

Larnu
1 июля 2021 в 15:56
0

Отвечает ли это на ваш вопрос? Как создать список, разделенный запятыми, с помощью SQL-запроса?

Larnu
1 июля 2021 в 15:56
0

Отвечает ли это на ваш вопрос? Результаты, разделенные запятыми, в SQL

Larnu
1 июля 2021 в 15:56
0

Вы говорите, что вышеописанное не сработало. Почему нет?

Serg
1 июля 2021 в 16:03
0

Ваш запрос не соответствует именам столбцов ваших таблиц. Не уверен, о чем вопрос.

Charlieface
1 июля 2021 в 22:01
0

Отвечает ли это на ваш вопрос? Результаты, разделенные запятыми, в SQL

Ответы (1)

avatar
Gordon Linoff
1 июля 2021 в 15:56
0

Простейший метод — string_agg(), доступный в более поздних версиях SQL Server:

select name, string_agg(skill, ', ') within group (order by skill)
from InterestCodeRoot
group by name;