0

我需要为一组几个 ID 获取列的最新值 (current_price)。我将日期/时间存储在第三列中,并且一直在尝试使用 MAX() 函数,如下所示:

select symid, current_price, MAX(price_date_time)
from tblHistory
group by SymID

显然,这不起作用,因为我没有将 current_price 列为聚合函数或 group by 子句。但我需要的结果只是简单地列出最新日期/时间的 current_price 以及它与哪个 ID 相关联。这可能吗?

4

2 回答 2

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
于 2013-10-28T03:36:54.577 回答
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
于 2013-10-28T03:44:36.270 回答