唯一值与SQL Server 2014中每个ID

时间:2017-04-23 05:03:11

标签: unique distinct sql-server-2014 for-xml-path string-aggregation

我在SQL Server 2014中有两个表:

  1. current_entry
  2. data_by_client
  3. 我有两列User_Skill。我需要唯一的Skill值来根据User Ids从select语句中的两个表连接。 String_Agg在SQL Server 2014中无效,因此我尝试使用XML PATH。

    请找到预期输出的附加屏幕截图:

    enter image description here

    以下是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
    

    我遇到问题,因为我没有得到预期的输出。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用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/