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