在表中的位置生成相同的数据

时间:2018-06-30 13:19:22

标签: sql postgresql postgresql-9.5

我有一个测试表

test_table

add是计数一天的增加值,而删除一天的值,diff是不同的add和del字段加上上一个差异

我该如何编写查询并返回!参见图片result image

其中日期间隔不是一天,在那里将生成相同的列,例如生成03.05.2018行的行,这是ADD = 0,DEL = 0,AND DIFF =以前的 4,在2018年5月11日之后生成到当前日期的行

1 个答案:

答案 0 :(得分:1)

使用generate_series(),然后使用left join生成所有行:

select 1 as com_id, gs.dte,
       coalesce(add, 0) as add, coalesce(del, 0) as del,
       (sum(add) over (order by gs.dte) -
        sum(del) over (order by gs.dte)
       ) as diff
from generate_series('2018-05-01'::date, current_date, interval '1 day') gs(dte) left join
     test t
     on t.date = gs.dte;

Here是一个学期。