繁体   English   中英

Ms Access-连接两个表并获取最后一条记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM