我已经用谷歌搜索了很多,但我没有找到任何合适的解决方案。我是开发人员,对SQL查询没有深入的了解。请帮助我。
此表由两个表用户和位置的左连接生成,外键location_id。
得到这个
现在我希望它像下面这样。
期待这个
如果一个用户最多只有两个地址,那么你可以尝试这样的子查询:
SELECT
u.user_id,
u.full_name,
u.user_type,
(SELECT name FROM location WHERE id=u.location_id LIMIT 1) location,
(SELECT name FROM location WHERE id=u.location_id LIMIT 1 OFFSET 1) location_something
FROM user u
...
如果只找到一个地址,则location_something将为空。
如果您不确定位置的数量,那么我认为我们无法通过SQL查询获得"预期结果"。
假设你已经离开了连接结果 #SomeTable
您可以选择这样的结果
SELECT
user_id, full_name, user_type,
STUFF((
SELECT ', ' + [location]
FROM #SomeTable
WHERE (user_id = Results.user_id)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
,1,2,'') AS Locations
FROM #SomeTable Results
GROUP BY user_id, full_name, user_type
而不是在代码中的更远的地方,您将每行中的"位置"列拆分