Уникальные значения объединяются со значением, разделенным запятыми, в SQL Server 2014 для каждого идентификатора

У меня есть две таблицы в SQL Server 2014:

  1. current_entry
  2. data_by_client

У меня есть два столбца User_ и Skill. Мне нужны уникальные значения Skill для конкатенации из обеих таблиц в операторе выбора в соответствии с идентификаторами пользователей. String_Agg не работает в SQL Server 2014, поэтому я попытался использовать XML PATH.

Пожалуйста, найдите прикрепленный скриншот для ожидаемого результата:

введите здесь описание изображения

Вот скрипт SQL для него: SQL Fiddle

Я использовал приведенный ниже запрос XML PATH:

SELECT 
    User_, Products + Skill 
FROM
    (SELECT DISTINCT 
         User_, Skill,
         (SELECT DISTINCT rs.Skill + ','
          FROM dbo.current_entry u 
          INNER JOIN dbo.data_by_client rs ON u.User_ = rs.User_
          WHERE rs.User_ = r.User_
          FOR XML PATH('')) AS Products
     FROM    
         dbo.current_entry r) l

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


person user1538020    schedule 23.04.2017    source источник


Ответы (1)


Можете ли вы попробовать отработать свое решение, используя foll. Подход:

SELECT
   t1.user,
   Item = stuff((SELECT ( ', ' + skill )
                       FROM #string_test t2
                      WHERE t1.user = t2.user
                      ORDER BY 1
                        FOR XML PATH( '' )
                    ), 1, 1, '' )FROM #string_test t1
GROUP BY user

Ссылка: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4ac19fe5-be05-479f-bcc2-8fdfa6c1ae1f/pivot-string-concatenation?forum=transactsql

Затем вы можете использовать пользовательскую функцию sql для удаления дубликатов. См. http://blog.sqlauthority.com/2009/01/15/sql-server-remove-duplicate-entry-from-comma-delimited-string-udf/amp/

person variable    schedule 23.04.2017