[英]Ms Access - Join two tables and get the last record
我有2个名为Reefers和FilteredAlerts的表。 我想加入这两个表。
如何获取状态为“已加载”且GPSAlertype为“温度”的每个冷藏柜的最新记录?
从结果中可以看到,由于GPSAlertType不等于Temperature,所以没有显示ReeferNo R-3。 我正在使用下面的代码,但总是给我一个错误。
SELECT
r.ReeferNo,
r.TransporterName,
r.Status,
sub2.AlertDateTime,
sub2.ReceivedDateTime,
sub2.GPSAlertType,
sub2.Temperature,
sub2.Location
FROM
Reefers AS r
LEFT JOIN
(
SELECT
sub1.ReeferNo,
a2.AlertDateTime,
a2.ReceivedDateTime,
a2.GPSAlertType,
a2.Temperature,
a2.Location
FROM
(
SELECT
a1.ReeferNo,
Max(a1.AlertDateTime) AS MaxOfAlertDateTime
FROM FilteredAlerts AS a1
WHERE a1.GPSAlertType='Temperatures' AND r.Status = 'Loaded'
GROUP BY a1.ReeferNo
) AS sub1
INNER JOIN FilteredAlerts AS a2
ON
(sub1.MaxOfAlertDateTime = a2.AlertDateTime)
AND (sub1.ReeferNo = a2.ReeferNo)
) AS sub2
ON r.ReeferNo = sub2.ReeferNo;
在此先感谢您的帮助。
这个给你:
SELECT
r2.ReeferNo,
r2.TransporterName,
r2.Status,
a2.AlertDateTime,
a2.ReceivedDateTime,
a2.GPSAlertType,
a2.Temperature,
a2.Location
FROM ((SELECT r.ReeferNo, Max(a.AlertDateTime) as AlertDateTime
FROM Reefers r LEFT JOIN FilteredAlerts a ON r.ReeferNo = a.ReeferNo
WHERE
r.Status="Loaded" AND
a.GPSAlertType='Temperature'
GROUP BY r.ReeferNo
) s LEFT JOIN FilteredAlerts a2 ON
s.ReeferNo = a2.ReeferNo and
s.AlertDateTime = a2.AlertDateTime
) INNER JOIN Reefers r2 ON s.ReeferNo = r2.ReeferNo
WHERE a2.GPSAlertType='Temperature' and
r2.Status='Loaded';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.