我们有一个如下表格:
DATAID Last_Name First_Name ADDRESS
1 Smith John 5000 Street
2 Smith John 6666 Street
3 Doe Jim 1111 Street
4 Doe Jim 2222 Street
如您所见,DATAID
是一个独特的领域。同一员工在多个列中列出了多个地址。还有许多其他列,每个员工都有唯一的数据,我没有在上面的示例表中包含这些数据。例如,电话号码,电子邮件等
如何按员工的名字和名字为每位员工分组多条记录?我试着做一个JOIN并没有得到理想的结果。我也无法通过仅运行DISTINCT on first_name and last_name
并从多列显示每位员工的相关数据来弄清楚如何返回所需结果。
答案 0 :(得分:1)
你可以这样做:
SELECT
t1.First_Name,
t1.Last_Name,
STUFF((
SELECT ', ' + t2.Address
FROM Tablename AS t2
WHERE t1.First_Name = t2.First_name AND t1.Last_Name = t2.Last_Name
FOR XML PATH(''))
,1,2,'') AS Address
FROM tablename AS t1
GROUP BY t1.First_Name,
t1.Last_Name;
这将为您提供按First_name
和Last_Name
分组的结果,地址为逗号分隔。
请在此处查看:
这会给你:
| FIRST_NAME | LAST_NAME | ADDRESS |
-----------------------------------------------------
| Jim | Doe | 1111 Street, 2222 Street |
| John | Smith | 5000 Street, 6666 Street |