对于表中没有条目的日期返回0行 - SQL

时间:2018-03-16 10:35:45

标签: sql postgresql

我有一张记录每日销售数据的表格。但是,有些日子没有进行销售,因此数据库中没有这些日期的记录。是否可以从没有销售的这些日期返回null的表中提取数据

Sample view of the table that has the daily sales data by day and seller

参考附图,可以看到1月4日和1月8日没有销售。我想写一个SQL查询,它将返回1月1日至1月10日的所有日期,但是1月4日和1月8日,它应该返回0,因为那些日期没有行(没有完成销售)

我的约会时间是从2018年3月1日开始,接下来的几个季度应继续。

2 个答案:

答案 0 :(得分:1)

是。在Postgres中,您可以使用generate_series()生成范围内的日期或数字。

然后,您可以使用cross join生成行,然后使用left join来生成数据:

select s.seller, gs.dte, t.count
from (select generate_series(mindate::timestamp, maxdate::timestamp, interval '1 day')::date
      from (select min(date) as mindate, max(date) as maxdate
            from t
           ) x
     ) gs(dte) cross join
     (select distinct seller from t) s left join
     t
     on t.date = gs.dte and t.seller = s.seller

答案 1 :(得分:-1)

// pseudo code void function(reply, responder, context, service) { // register this RPC with another unique tag so to serve new incoming request of the same type on the completion queue service_->RequestRPC1(/*params*/, new_unique_id); // now again save this new_unique_id and current function into the map, so when tag will be returned we can do lookup map.emplace(new_unique_id, function); // now you're free to do your logic // do your logic } 也是替代方案,

CTE