我有一个数据库,其中包含科学仪器分析的数千个样本的记录。我需要从中提取一些具体数据。
例如,我的数据库看起来有点像这样:
ID Time SensorValue
---------------------------
aaaa 1 xxxx
aaaa 2 xxxx
aaaa 3 xxxx
bbbb 1 xxxx
bbbb 2 xxxx
bbbb 3 xxxx
bbbb 4 xxxx
cccc 1 xxxx
cccc 2 xxxx
cccc 3 xxxx
cccc 4 xxxx
dddd 1 xxxx
eeee 1 xxxx
eeee 2 xxxx
eeee 3 xxxx
eeee 4 xxxx
eeee 5 xxxx
等等。有数以千计的唯一ID。时间并不总是不变的。有些分析需要500秒,有些分析需要5000秒。
我需要的是能够在运行的最后一个步骤找到样品的传感器值,无论是500还是5000.如果我只有10或20个样品,我会手工完成,但是因为我有成千上万,所以我需要自动化它。
有人可以帮助查询以提取此信息吗?我希望我的结果看起来像这样(假设输入与上面相同):
ID Time SensorValue
---------------------------
aaaa 3 xxxx
bbbb 4 xxxx
cccc 4 xxxx
dddd 1 xxxx
eeee 5 xxxx
答案 0 :(得分:1)
将表连接到子查询的结果,该子查询找到每个ID的最后一次:
select d.*
from (select ID, max(Time) last
from data_table
group by ID) t
join data_table d on t.ID = d.ID
and d.Time = t.last
答案 1 :(得分:0)
我无法对第一个答案发表评论,但我在此重复答案,您需要使用表格的真实姓名来命名真实姓名。
SELECT realnameofyourtable.id, realnameofyourtable.[time], realnameofyourtable.sensorvalue
FROM realnameofyourtable
INNER JOIN (
SELECT ID, max(time) as timedata
FROM realnameofyourtable
GROUP BY ID) AS lastid
ON (realnameofyourtable.[time] = lastid.timedata)
AND (realnameofyourtable.id = lastid.id)
答案 2 :(得分:0)
您可以使用子查询查找最新时间:
Select ID, Time, SensorValue
From YourTable
Where Time In
(Select Max(Time)
From YourTable As T
Where T.ID = YourTable.ID)