bre*_*vhb 1 t-sql sql-server pivot
可以说我有两张桌子:
1与用户和另一个用户记录哪些用户使用了什么代码.
Users ----- Id, Name 1, 'John' 2, 'Doe' Codes ------ Id, UserId, code 1, 1, 145 2, 1, 187 3, 2, 251
现在我想拉出一个导致他跟随的查询
Name, UsedCodes 'John', '145,187' 'Doe', '251'
如何使用查询或存储过程完成此操作?
由于您没有指定数据库,我给您两个选项:
使用MySql,您应该只使用GROUP_CONCAT()
聚合函数.
显然,在MS DB上获得相同结果的最快方法(没有游标,没有合并......)就是使用FOR XML PATH('')
它简单地省略了XML元素.
SELECT
u.Name,
c1.UserId,
(
SELECT c2.Code + ','
FROM Codes c2
WHERE c2.UserId = c1.UserId
ORDER BY c2.code
FOR XML PATH('')
) as Codes
FROM Codes c1
JOIN Users u
ON (u.Id = c1.UserId)
GROUP BY c1.UserId, u.Name
Run Code Online (Sandbox Code Playgroud)
阅读这篇文章,它解释了实现这一目标的所有可能方法.