我正在使用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/