我有一张记录每日销售数据的表格。但是,有些日子没有进行销售,因此数据库中没有这些日期的记录。是否可以从没有销售的这些日期返回null的表中提取数据
参考附图,可以看到1月4日和1月8日没有销售。我想写一个SQL查询,它将返回1月1日至1月10日的所有日期,但是1月4日和1月8日,它应该返回0,因为那些日期没有行(没有完成销售)
我的约会时间是从2018年3月1日开始,接下来的几个季度应继续。
答案 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