有开始和结束日期:
oa.entity_created oa.lagg
id 1| start |2022-07-20 end |2022-08-15
id 2| start |2022-06-15 end |2022-08-09
id 3| start |2022-08-12 end |blank
如何在没有开始日期和结束日期的情况下在这些日期之间计数,就像这个
oa.entity_created oa.lagg
id 1| start |2022-07-21 end |2022-08-14
id 2| start |2022-06-16 end |2022-08-08
id 3| start |2022-08-13 end |blank
如果空白计数直到current_date
count(case when (oa.entity_created < cred.entity_created and oa.lagg > cred.entity_created) then 1 end)
不能正常工作
要正确解释谓词中的空白值(我假设这是一个null
值(,请将COALESCE与默认值一起使用,在您的情况下是CURRENT_DATE
。
coalesce(oa.lagg,CURRENT_DATE)
因此,例如,要从表中获取与2022-08-14
的日期匹配的所有行,请使用以下谓词(请参阅WHERE
子句,其余为示例数据(。
select * from (
values
(date'2022-07-20',date'2022-08-15'),
(date'2022-06-15',date'2022-08-09'),
(date'2022-08-12',null)
) oa(entity_created,lagg)
where oa.entity_created < DATE'2022-08-14' and coalesce(oa.lagg,CURRENT_DATE) > DATE'2022-08-14'
entity_created|lagg |
--------------+----------+
2022-07-20|2022-08-15|
2022-08-12| |
相应地调整CASE
语句中的这个谓词。