Database 比较同一表上当前日期和昨天的值POSTGRESQL

Database 比较同一表上当前日期和昨天的值POSTGRESQL,database,postgresql,report,Database,Postgresql,Report,首先,我希望你们能理解我糟糕的英语:)) 我有一张这样的桌子 产品|价值| trx|U日期 苹果| 100 | 2020-06-01 苹果| 300 | 2020-06-02 苹果| 500 | 2020-06-03 我需要创建一个这样的报告(假设今天是2020-06-03) 产品|昨天|当前|日期|增量 苹果| 300 | 500 | 200 我不知道如何创建一个查询(postgre),比较那些值。。仅供参考,我每天都会更新此表。。我尝试了('1天::间隔)查询,但它总是显示2020-06-0

首先,我希望你们能理解我糟糕的英语:))

我有一张这样的桌子
产品|价值| trx|U日期
苹果| 100 | 2020-06-01
苹果| 300 | 2020-06-02
苹果| 500 | 2020-06-03

我需要创建一个这样的报告(假设今天是2020-06-03)
产品|昨天|当前|日期|增量
苹果| 300 | 500 | 200

我不知道如何创建一个查询(postgre),比较那些值。。仅供参考,我每天都会更新此表。。我尝试了('1天::间隔)查询,但它总是显示2020-06-03之前的所有日期,即2020-06-01和2020-06-02

感谢您的帮助。

使用CTE:

例如:

CREATE TABLE product_table (product varchar, value integer, trx_date date);
INSERT INTO product_table values ('apple', 100, '06/01/2020'), ('apple', 300, '06/02/2020'), ('apple', 500, '06/03/2020');

WITH prev AS (
    SELECT
        product,
        value
    FROM
        product_table
    WHERE
        trx_date = '06/03/2020'::date - '1 day'::interval
)
SELECT
    pt.product,
    prev.value AS yesterday,
    pt.value AS CURRENT_DATE,
    pt.value - prev.value AS delta
FROM
    product_table AS pt,
    prev
WHERE
    trx_date = '06/03/2020';

 product | yesterday | current_date | delta 
---------+-----------+--------------+-------
 apple   |       300 |          500 |   200



使用超前或滞后将以下行(超前)或前几行(滞后)中的数据“组合”到当前行。在这种情况下,我使用lag函数获取“昨天”值

select product, yesterday,  today, today-yesterday delta
  from ( select p.product, p.value today 
              , lag(value) over (partition by p.product 
                                     order by p.trx_date) yesterday
              , p.trx_date
          from products p
       ) d
 where trx_date = '2020-06-03'::date ;