【问题标题】:Unique values concatenate with a comma separated value in SQL Server 2014 per IDSQL Server 2014 中每个 ID 的唯一值与逗号分隔值连接
【发布时间】:2017-04-23 05:03:10
【问题描述】:

我在 SQL Server 2014 中有两个表:

  1. current_entry
  2. data_by_client

我有两列 User_Skill。我需要唯一的 Skill 值来根据用户 ID 从 select 语句中的两个表中连接。 String_Agg 在 SQL Server 2014 中不起作用,所以我尝试使用 XML PATH。

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

这是它的 SQL Fiddle: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

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

【问题讨论】:

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


    【解决方案1】:

    您能否尝试使用以下方法来锻炼您的解决方案。方法:

    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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      相关资源
      最近更新 更多