sql - postgresql join on max(date) 和另一个索引

标签 sql postgresql date join

我正在尝试连接 2 个表以查找下一个交货日期之前的天数。

一张表是零件号和进货日期

part    restock_date
123 01/01/15
123 04/01/15
123 06/30/15
123 09/28/15
234 01/25/15
234 04/25/15
234 07/24/15
234 10/22/15

另一个表是零件号和分析日期

part    analysis_date
123 02/12/15
123 03/29/15
123 05/13/15
123 06/27/15
234 03/23/15
234 05/07/15
234 06/21/15
234 08/05/15

我正在尝试创建一个连接来显示给定分析日期的下一个补货日期,以便我可以计算分析日期和下一个补货日期之间的天数差异。

part    restock_date    analysis_date   days_to_restock
123 04/01/15    02/12/15    48
123 04/01/15    03/29/15    3
123 06/30/15    05/13/15    48
123 06/30/15    06/27/15    3
234 04/25/15    03/23/15    33
234 07/24/15    05/07/15    78
234 07/24/15    06/21/15    33
234 10/22/15    08/05/15    78

有什么建议吗?

最佳答案

你可以通过横向连接来解决这个问题:

select t2.*, t1.restock_date,
       (t1.restock_date - t2.analysis_date) as diff
from table2 t2 left join lateral
     (select t1.*
      from table1 t1
      where t2.part = t1.part and t2.analysis_date <= t1.restock_date
      order by t1.restock_date
      limit 1
     ) t1;

关于sql - postgresql join on max(date) 和另一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645605/

相关文章:

postgresql - 计算 pen ultimate ntile postgres 的成本

c# - 有没有办法在 C# 中获取日期更改通知?

r - 根据子组填写季度时间序列中缺失的日期和时间

MySQL - 基于更多索引的查找

SQL:计数高于组平均值的值

java - 如何启动 postgresql 实例进行集成测试

postgresql - Heroku - 将单个表转储并加载到共享的 postgres 数据库

mysql - 如何通过触发器减少另一个表中的值? (MySQL)

sql - 如何存储稀疏邻接矩阵

c# - 获取当月的第一天和最后一天