PostgreSQL不存在值的添加条件

问题描述 投票:0回答:1

我正在从几个现有的表中创建一个新视图,并且每天都会刷新数据,我有一个如下的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获得一个像这样的数据表:...

sql database postgresql view
1个回答
0
投票

使用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
© www.soinside.com 2019 - 2024. All rights reserved.