【发布时间】:2019-11-20 19:52:07
【问题描述】:
我有一个带有foreign_key_id 列和date 列的表。
对于具有相同外键的每一行,都有不同的日期,如果我 order by foreign_key_id, date ,则 90% 的时间所有日期都是连续的。
但也有一些极端情况,即多个条目具有相同的外键,但日期不连续。
试图想出一种简单的方法来识别所有没有连续日期的 foreign_key_id 。有什么想法吗?
我正在考虑加入一个生成的系列,以某种方式按轨道 ID 进行分区,但一直碰壁。我的 sql 查询编辑器不断崩溃,这增加了一些不相关的挫败感
编辑:
我最终做了一个 order by foreign_key_id, date ,将结果复制并粘贴到 excel 中,然后通过执行这种类型的逻辑公式找到我需要的内容:
=IF( (B91 = B90), (F91 =(F90 + 1)) , 1 ) ,其中 b 是外键列,F 是日期列
但想知道是否可以在 sql 中完成类似的操作。这是我放弃并走向卓越时所拥有的:
select to_char(date_range.days, 'yyyy-mm-dd') as x
, data.*
from (
select generate_series('2019-04-30'::date,'2019-11-05'::date, '1 day')::date as days
) as date_range
left join(
select foreign_key_id, date
from table_a
order by foreign_key_id, date
) data on data.date = date_range.days
where foreign_key_id is null
【问题讨论】:
标签: sql postgresql