查询每个工作中心的最新状态
Query most recent status for each workcenter
我有一个 table:
Workcenter | Date | Status
------------------------------
SLX83A 12/6/2016 3:11:20 PM Running
SLX83B 12/6/2016 3:28:33 PM Break/Lunch/Meeting
SLX83B 12/2/2016 10:11:37 AM Breakdown
SLX83B 12/6/2016 3:28:29 PM Running
SLX83B 12/6/2016 1:30:21 PM Tool Change/Damage
SLX83B 12/1/2016 3:13:43 PM Waiting On Crane
SLX83C 12/1/2016 8:10:56 AM Break/Lunch/Meeting
SLX83C 11/27/2016 6:40:00 AM Load/Unload Clamp Change
我想输出每个工作中心的最新状态,例如:
Workcenter | Date | Status
------------------------------
SLX83A 12/6/2016 3:11:20 PM Running
SLX83B 12/6/2016 3:28:33 PM Break/Lunch/Meeting
SLX83C 12/1/2016 8:10:56 AM Break/Lunch/Meeting
我可以通过以下方式获得最近的时间:
SELECT [Current Status Query].[Workcenter ID], Max([Current Status Query].[MaxOfStart Date/Time]) AS [MaxOfMaxOfStart Date/Time]
FROM [Current Status Query]
GROUP BY [Current Status Query].[Workcenter ID];
=
Workcenter | Date
------------------------------
SLX83A 12/6/2016 3:11:20 PM
SLX83B 12/6/2016 3:28:33 PM
SLX83C 12/1/2016 8:10:56 AM
但是我不知道如何将 Status' 设置为 "tag along."
SELECT t1.*
FROM
Table t1
LEFT JOIN Table t2
ON t1.workcenter = t2.workcenter
AND t1.Date < t2.Date
WHERE
t2.workcenter IS NULL
你可以做一个 ANTI SELF JOIN
。基本上 left join
table 本身,其中 t1.Date
小于 t2.Date
以查找没有后面一行的行,然后过滤掉有的行比赛。
我有一个 table:
Workcenter | Date | Status
------------------------------
SLX83A 12/6/2016 3:11:20 PM Running
SLX83B 12/6/2016 3:28:33 PM Break/Lunch/Meeting
SLX83B 12/2/2016 10:11:37 AM Breakdown
SLX83B 12/6/2016 3:28:29 PM Running
SLX83B 12/6/2016 1:30:21 PM Tool Change/Damage
SLX83B 12/1/2016 3:13:43 PM Waiting On Crane
SLX83C 12/1/2016 8:10:56 AM Break/Lunch/Meeting
SLX83C 11/27/2016 6:40:00 AM Load/Unload Clamp Change
我想输出每个工作中心的最新状态,例如:
Workcenter | Date | Status
------------------------------
SLX83A 12/6/2016 3:11:20 PM Running
SLX83B 12/6/2016 3:28:33 PM Break/Lunch/Meeting
SLX83C 12/1/2016 8:10:56 AM Break/Lunch/Meeting
我可以通过以下方式获得最近的时间:
SELECT [Current Status Query].[Workcenter ID], Max([Current Status Query].[MaxOfStart Date/Time]) AS [MaxOfMaxOfStart Date/Time]
FROM [Current Status Query]
GROUP BY [Current Status Query].[Workcenter ID];
=
Workcenter | Date
------------------------------
SLX83A 12/6/2016 3:11:20 PM
SLX83B 12/6/2016 3:28:33 PM
SLX83C 12/1/2016 8:10:56 AM
但是我不知道如何将 Status' 设置为 "tag along."
SELECT t1.*
FROM
Table t1
LEFT JOIN Table t2
ON t1.workcenter = t2.workcenter
AND t1.Date < t2.Date
WHERE
t2.workcenter IS NULL
你可以做一个 ANTI SELF JOIN
。基本上 left join
table 本身,其中 t1.Date
小于 t2.Date
以查找没有后面一行的行,然后过滤掉有的行比赛。