sql - 重写相关子查询,Redshift 抛出这种类型的相关子查询模式尚不支持错误
问题描述
我正在处理一个查询,该查询需要在 A.user_id=B.user_id 上将表 A 与表 B 连接起来,并且 B.day 小于 A.day 但最接近 A.day。
这是我写的:
Select A.user_id, A.date, b1.v1 from A
Left Join B as b1
on A.user_id=b1.user_id and b1.day=(Select max(day) from B as b2 where b2.user_id=A.user_id
and b2.day < A.day)
我正在使用 psycopg2 在 python 中执行此操作,它返回错误:This type of correlated subquery pattern is not supported yet
。
有人可以帮我重写它,使其不使用相关子查询吗?
解决方案
一种方法可以是:
Select A.user_id, A.date, b1.v1, max(b1.day)
from A Left Join B as b1 on A.user_id=b1.user_id and b1.day < A.day
group by A.user_id, A.date, b1.v1;
推荐阅读
- image - 在heroku release docker image中没有为进程类型web指定命令
- javascript - 使用序数后缀格式化日期
- kubernetes - 将 Grafana Helm Chart 与 Grafana App For Kubernetes 一起安装
- windows - 我想从一个 perl 脚本运行另一个 perl 脚本,但我需要单独执行它
- java - 如何在android中获取字符串数组
- extjs - 如何在网格中找到行中元素的总和
- python - 将列添加到具有不同值的指定索引处的 csv 文件
- git - Fixup git after a failed filter-branch --tree-filter
- jquery - 替换标签中包含输入的文本,而不影响输入
- ruby-on-rails - has_many through associations find count of physician.id