【问题标题】:Query a history table to find state on a given date in postgresql在 postgresql 中查询历史表以查找给定日期的状态
【发布时间】:2020-12-04 12:14:20
【问题描述】:

我创建了一个历史表,该表由另一个“实时”表上的触发器填充。我现在希望能够看到它在给定日期的样子。我可以使用 where 子句查询单个产品,该子句为我提供单个产品所需的输出。

SELECT * FROM test
WHERE productid = 1
AND updated < '2020-02-15'
ORDER BY updated DESC
LIMIT 1

但是,我如何获取表格中每个产品在给定日期(本例中为 2 月中旬)之前的最后更新值?

我的表格的一个简单版本如下所示:-

productid   amount  updated
1   5   01/01/2020
1   6   01/02/2020
1   7   01/03/2020
2   13  01/01/2020
2   14  01/02/2020
2   15  01/04/2020

我想要的结果是:

productid   amount  updated
    1   6   01/02/2020
    2   14  01/02/2020

非常感谢

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    你可以使用distinct on:

    select distinct on (productid) t.*
    from test t
    where updated < date '2020-02-15'
    order by productid, updated desc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2014-11-22
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      相关资源
      最近更新 更多