我正在从几个现有的表中创建一个新视图,并且每天都会刷新数据,我有一个如下的select语句:
SELECT data.hours
data.date_id
data.name
获得像这样的数据表:
NAME | DATEID | HOURS
Robert | 20200511 | 10 (monday, may 11 2020)
Robert | 20200513 | 8 (wednesday, may 13 2020)
date_id包含CHAR值中的日期(例如20200513),每个名称应具有一周中的每一天的值,但有时该值要到星期五才存在,我想提出一个条件,即如果没有数据过去几天或今天的名称,它为我节省了小时数,而不是保存任何数据,因为它在新表中不存在,因此不保存任何数据。
NAME | DATEID | HOURS
Robert | 20200511 | 10 (monday, may 11 2020)
Robert | 20200512 | 0 (tuesday, may 12 2020)
Robert | 20200513 | 8 (wednesday, may 13 2020)
我正在从几个现有的表中创建一个新视图,并且每天都会刷新数据,我有一个如下的select语句:SELECT data.hours data.date_id data.name获得一个像这样的数据表:...
使用generate_series()
。 。但您的值已转换为日期。然后使用left join
:
with t as (
<your query here>
)
select d.name, d.dte, coalesce(t.hour, 0) as hour
from (select name, generate_series(mind, maxd, interval '1 day') dte
from (select name, min(date_id)::text::date as mind, max(date_id)::text::date as maxd
from t
group by name
) t
) d left join
t
on d.name = t.name and
d.dte = t.date_id::text::date