连接两行具有除一个值之外的所有重复值的单个表


Joining two rows of single table with all duplicate value except one?

我已经用谷歌搜索了很多,但我没有找到任何合适的解决方案。我是开发人员,对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

而不是在代码中的更远的地方,您将每行中的"位置"列拆分