Sql MS ACCESS中的子查询:每个“仅选择一条记录”;“人”;每个日期

Sql MS ACCESS中的子查询:每个“仅选择一条记录”;“人”;每个日期,sql,ms-access,select,subquery,Sql,Ms Access,Select,Subquery,我使用的是Microsoft Access中名为Analysized的表。它有许多字段,但在本例中用于过滤的三个字段是analysis.reads\u miu\id、analysis.ReadDate、analysis.ReadTime。我需要从“分析”表中提取记录,在该表中,读数miu id被分组在一起,然后按ReadDate排序,但只显示所述日期的最后一个条目,该条目可能是ReadTime中值最高的时间。我创建了一个查询: SELECT readings_miu_id, Reading, R

我使用的是Microsoft Access中名为Analysized的表。它有许多字段,但在本例中用于过滤的三个字段是analysis.reads\u miu\id、analysis.ReadDate、analysis.ReadTime。我需要从“分析”表中提取记录,在该表中,读数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);
****被用来表示我不知道该在这里放什么

如果我输入了一个有效的读数\u miu\id,我会得到一个该读数的最高时间记录\u miu\id

如何使用像上面这样的子查询,只提取每个readings\u miu\id每个ReadDate的最后一次ReadTime


readings\u miu\u id不是表id,它更类似于项目编号或名称

这将使您接近。“将读数组合在一起的位置”这句话让我感到困惑。不确定是否要在该字段上使用GroupBy或sort。此查询将为您提供所分析表中具有相同日期但具有给定日期的“最大:”时间的记录。听起来这正是你想要的

SELECT readings_miu_id, Reading, ReadDate, ReadTime, MIUwindow, SN, Noise, RSSI, OriginCol, ColID, Ownage 
FROM analyzed ,
(
  Select ReadDate as matchDate, Max(ReadTime) as matchTime
  FROM analyzed 
  Where analyzed.ReadDate Between #4/21/2009# and #4/29/2009# 
  Group by ReadDate
) dateAndTime
WHERE analyzed.ReadDate Between #4/21/2009# and #4/29/2009# AND ReadDate = dateAndTime.matchDate AND readTime = dateAndTime.matchTime  
Order By readDate

我只是将主表化名为,并在子查询中引用它。不确定是否需要在子查询中按ReadDate进行筛选。

我认为前1名应该负责获取最新的readtime。max()这里将为每个ReadDate组获取一行。然后他只需要在子查询的where子句中包含ReadDate。这很接近,但它只返回每天的最高时间分组,而不是每天的最高每次读取时间,即每个读取时间id有多天,而我只需要每天的最高时间阅读资料。非常有帮助,谢谢。这就是我想要的。谢谢。我不知道您可以创建这样的表副本来交叉引用sql正在查看的行。谢谢朋友们的帮助。有人能告诉我为什么我会被否决吗?我的问题有问题吗?还是有人只是想得到“批评家”的徽章?
 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);