我正在使用Microsoft Access中称为“分析表”的表。它有很多字段,但是分析了在这种情况下用于过滤的三个字段。readings_miu_id,analytics.ReadDate,analyzer.ReadTime。我需要从“analyzed”表中提取记录,在该表中将readings_miu_id分组在一起,然后按ReadDate排序,但仅显示该日期的最后一个条目,这可能是ReadTime中价值最高的时间。我创建了一个查询:

SELECT readings_miu_id, Reading, ReadDate, ReadTime,
    MIUwindow, SN, Noise, RSSI, OriginCol, ColID, Ownage
FROM analyzed
WHERE analyzed.ReadDate Between #4/21/2009# and #4/29/2009#
AND analyzed.ReadTime= (
    SELECT TOP 1 analyzed.ReadTime
    FROM analyzed
    WHERE analyzed.readings_miu_id = *????***
    ORDER BY analyzed.ReadTime DESC);

* ???? ***被用来表明我不确定在这里放什么

如果我输入有效的readings_miu_id,则会得到一条记录,该记录的读取时间最长。

我如何使用上述子查询来仅按每个ReadDate的reads_miu_id获取最后的ReadTime?

readings_miu_id不是表格ID,它更类似于项目编号或名称

最佳答案

 SELECT readings_miu_id
    , Reading , ReadDate , ReadTime
    , MIUwindow, SN, Noise, RSSI
    , OriginCol, ColID, Ownage
 FROM analyzed AS A
    WHERE analyzed.ReadDate Between #4/21/2009# and #4/29/2009#
       AND analyzed.ReadTime=
          (SELECT TOP 1 analyzed.ReadTime FROM analyzed
             where analyzed.readings_miu_id = A.readings_miu_id
                AND analyzed.ReadDate = A.ReadDate
             ORDER BY analyzed.ReadTime DESC);

我只是将主表别名为A,并在子查询中引用了它。不知道是否需要在子查询中按ReadDate进行过滤。

关于sql - MS ACCESS中的子查询:每个“人”每个日期仅选择一个记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/883383/

10-11 01:42
查看更多