【发布时间】:2021-01-27 07:09:28
【问题描述】:
我在 SQL (AWS Redshift) 中有一个表(表 A),我在其中隔离了包含帐户 ID 和日期的初始总体。我想将该表的输出和 LEFT 连接回“帐户”表,以仅返回在我的输出中存储在表中的日期之前或之前的开始日期。
Table A (Beg Pop)
-------
select account_id,
min(start_date),
min(end_date)
from accounts
group by 1;
我只想返回当前表中 account_id 匹配的日期之前的日期。我正在寻找类似...
Table B
-------
select a.account_id,
a.start_date,
a.end_date,
b.start_date_prev,
b.end_date_prev
from accounts as a
left join accounts as b on a.account_id = b.account_id
where max(b.start_date) less than a.start_date;
最终,我想返回表 a 中的所有内容,并且只返回 max(start_date) 小于表 A 中 start_date 的日期。我知道 WHERE 子句中不允许聚合,我想我可以做一个子查询,但是我只想要输出中的日期之前的最大日期。非常感谢任何建议。
【问题讨论】:
-
样本数据和期望的结果会有很大帮助。
-
日期如何早于开始日期,即帐户的最短日期?
-
我将添加示例数据和所需结果,但开始日期是我根据业务规则参数选择的,因此从某种意义上说它不是开始日期,而是真正的开始日期。在这个用例中,有一些日期在“start_date”之前。由于没有更好的名称,我只是将其标记为。 @GordonLinoff
标签: sql subquery amazon-redshift aggregate-functions