0

我们有一个如下所示的表:

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仅运行并显示来自多个列的每个员工的相关数据来返回所需的结果。

4

1 回答 1

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 |
于 2013-07-08T18:44:58.120 回答