我需要为一组多个ID获取列(current_price)的最新值。我将日期/时间存储在第三列中并尝试使用MAX()函数,如下所示:
select symid, current_price, MAX(price_date_time)
from tblHistory
group by SymID
显然,这不起作用,因为我没有将current_price列为聚合函数或group by子句。但我需要结果只是简单地列出最新日期/时间的current_price以及与之关联的ID。这可能吗?
答案 0 :(得分:1)
如果您的数据库支持分析查询。 (将“ROW_NUMBER()”替换为“RANK()”以允许并列)
SELECT * FROM
(
SELECT symid, current_price, ROW_NUMBER() OVER (PARTITION BY symid ORDER BY price_date_time DESC) AS rn
FROM tblHistory
) AS T
WHERE rn = 1
答案 1 :(得分:0)
如果不支持OVER / PARTITION BY查询(并且通常不支持),请使用:
SELECT t.symid, t.current_price, t.price_date_time
FROM tblHistory t
JOIN (
SELECT symid, MAX(price_date_time) price_date_time
FROM tblHistory
GROUP BY symid
) t2 ON t.symid = t2.symid AND t.price_date_time = t2.price_date_time