[英]MySQL 5.7 - getting latest entry(s) from specific combination of columns
[英]Getting latest entry from multiple groups in Mysql
如果问题标题不清楚,我们深表歉意。 真的不知道如何在一行中表达以下内容。
我希望我能解释一下我想要实现的目标。 这让我很头疼。
目前,我有一张表格,其中记录着不同项目员工的培训状况。 结构是这样的:
--------------------------------------------------------------
|id|timestamp |employee |project |status |
--------------------------------------------------------------
|1 |2015-10-01 00:00:00 | john doe | project_1 | In Training |
|2 |2015-10-04 00:00:00 | jane doe | project_1 | In Training |
|3 |2015-11-01 00:00:00 | john doe | project_1 | Live |
|4 |2015-10-08 00:00:00 | john doe | project_2 | In Training |
|5 |2015-11-01 00:00:00 | jane doe | project_2 | In Training |
|6 |2015-11-09 00:00:00 | jane doe | project_3 | Live |
现在,管理层需要一个表/视图,以提供有关每个员工的最新状态的概述。 所以我正在寻找一个查询,返回以下内容:
-----------------------------------------------------
| employee | project_1 | project_2 | project_3 |
-----------------------------------------------------
| John Doe | Live | In Training | |
| Jane Doe | In Training | In Training | Live |
因此,查询应查找每个员工和项目的最新条目,并返回该项目的状态。
有什么办法可行吗?
好,您将2个问题合并为1个。第一个问题是如何获取每个项目的每个员工的最新状态。 第二个是如何在列中显示数据。 第一个问题更有趣,所以这就是我要回答的问题。
SELECT DISTINCT x.employee
, y.project
, z.timestamp
, z.status
FROM my_table x
JOIN my_table y
LEFT
JOIN
( SELECT a.*
FROM my_table a
JOIN
( SELECT employee
, project
, MAX(timestamp) max_timestamp
FROM my_table
GROUP
BY employee
, project
) b
ON b.employee = a.employee
AND b.project = a.project
AND b.max_timestamp = a.timestamp
) z
ON z.employee = x.employee
AND z.project = y.project;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.