每个 ID 的 SQL Server 2014 中的唯一值与逗号分隔值连接
Unique values concatenate with a comma separated value in SQL Server 2014 per ID
我在 SQL Server 2014 中有两个表:
- current_entry
- 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
我遇到了问题,因为我没有得到预期的输出。
你能尝试使用 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
然后您可以使用自定义 sql 函数删除重复项。参考http://blog.sqlauthority.com/2009/01/15/sql-server-remove-duplicate-entry-from-comma-delimited-string-udf/amp/
我在 SQL Server 2014 中有两个表:
- current_entry
- 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
我遇到了问题,因为我没有得到预期的输出。
你能尝试使用 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
然后您可以使用自定义 sql 函数删除重复项。参考http://blog.sqlauthority.com/2009/01/15/sql-server-remove-duplicate-entry-from-comma-delimited-string-udf/amp/