Sql 在SELECT语句中使用GROUP BY(仅包含一个参数)添加来自不同表的多列

Sql 在SELECT语句中使用GROUP BY(仅包含一个参数)添加来自不同表的多列,sql,group-by,Sql,Group By,我已经创建了下面的代码。我要查找的输出是基于“日期更新”列的每个员工的最新详细信息(每次为员工保存详细信息时,都会向“员工”表中添加新行)。我遇到的问题是,我不知道如何在select语句中包含其他列,而不将它们添加到GROUP BY。我见过类似的帖子,但由于“CompanyName”列存在于“Company”表中,我发现很难写 SELECT Company.CompanyName AS [Company Name], Employee.EmployeeID AS [Employee ID], E

我已经创建了下面的代码。我要查找的输出是基于“日期更新”列的每个员工的最新详细信息(每次为员工保存详细信息时,都会向“员工”表中添加新行)。我遇到的问题是,我不知道如何在select语句中包含其他列,而不将它们添加到GROUP BY。我见过类似的帖子,但由于“CompanyName”列存在于“Company”表中,我发现很难写

SELECT
Company.CompanyName AS [Company Name],
Employee.EmployeeID AS [Employee ID],
Employee.DateUpdated AS [Date Updated],
MAX(Employee.DateUpdated) AS [MAX Date Updated]
FROM (dbo.Company
LEFT OUTER JOIN dbo.Employee ON (Company.EmployeeID = Employee.EmployeeID)
)
GROUP BY
Employee.EmployeeID 
我想看的表格与下面的相似

Company Name | Employee ID | Date Updated ABC 0001 01/01/2014 ABC 0530 01/04/2013 ABC 2001 01/01/1999 公司名称|员工ID |更新日期 ABC 0001 01/01/2014 ABC 0530 01/04/2013 ABC 2001 01/01/1999
除了
GROUPBY
子句之外,您的查询基本上没有问题。您需要
CompanyName
。也就是说,您可以改进查询:

SELECT c.CompanyName AS [Company Name], e.EmployeeID AS [Employee ID],
       MAX(e.DateUpdated) AS [MAX Date Updated]
FROM dbo.Company c JOIN
     dbo.Employee e
     ON c.EmployeeID = e.EmployeeID
GROUP BY c.CompanyName, e.EmployeeName;
这些变化:

  • 修正了
    分组依据
    子句
  • 添加了作为表名缩写的表别名。这使得查询更易于编写和读取
  • 左联接
    更改为内部联接。左连接似乎没有必要。如果数据维护正确,为什么两个表中的
    employeeid
    不匹配

非常感谢Gordon-如果两个表中有其他字段我想选择,是否只是将它们添加到select and GROUP BY中?@user2547766。对这是最简单的解决方案。再次感谢。这一切变得更有意义了!