选择给定日期之前的最新行
Posted
技术标签:
【中文标题】选择给定日期之前的最新行【英文标题】:Select latest row before for given date 【发布时间】:2020-07-31 12:01:21 【问题描述】:我尝试将日期与不同行中的日期进行比较。我希望图片能清楚地说明。
例如:
“June”中 ID 为“2”的产品应收取 100 美元的费用,因为该费用的有效期为 4 月至 7 月。
【问题讨论】:
欢迎来到 Stack Overflow!请注意,纯 text 非常适合数据。不是图像。始终声明您的 Postgres 版本。并尝试明确你的任务。您的问题有解释的余地。 【参考方案1】:对于单个给定的product_id
:
SELECT * -- which columns do you need?
FROM product p
JOIN productfee f ON f.valid_from <= p.date
WHERE p.product_id = 2
ORDER BY f.valid_from DESC
LIMIT 1;
如果表大小不一,最好至少有以下索引:
CREATE INDEX ON product (product_id);
CREATE INDEX ON productfee (valid_from DESC);
(或者更专业,取决于完整的图片。)
如果valid_from
可以是NULL
,请考虑NULLS LAST
。见:
显然,您将使用正确的 date
或 timestamp
类型,而不仅仅是月份名称。
【讨论】:
以上是关于选择给定日期之前的最新行的主要内容,如果未能解决你的问题,请参考以下文章