我希望以最新的产品价格执行SQL输出。 product_price可以针对产品编号多次更新,因此可以创建多行。我希望每个product_number消除多个行。

 SELECT
 product_number
 ,product_price
 ,MAX(update_timestamp)
 FROM product_price
 ORDER BY 1,2

最佳答案

有两种方法可以做到这一点。我的首选是子查询。首先获取产品编号,它是maxtimestamp:

SELECT product_number
 ,MAX(update_timestamp) as maxtimestamp
 FROM product_price
group by product_number


现在将其转换为子查询,并将其内部连接到第一个表以过滤除max之外的所有查询:

select a.product_number, a.maxtimestamp, b.product_price
from    ( SELECT product_number ,MAX(update_timestamp) as maxtimestamp
FROM product_price
group by product_number) a
inner join product_price b on a.product_number = b.product_number
    and a.maxtimestamp =   b.update_timestamp

10-06 00:23