[英]Bigquery: WHERE clause using column from outside the subquery
Bigquery 的新手,谷歌搜索无法真正指出问题的解决方案。
我正在尝试在子查询中使用 where 子句来过滤并选择主查询中每一行的最新行。 在 postgres 中,我通常会这样做:
SELECT
*
FROM
table_a AS a
LEFT JOIN LATERAL
(
SELECT
score,
CONCAT( "AB", id ) AS id
FROM
table_b AS b
WHERE
id = a.company_id
and
b.date < a.date
ORDER BY
b.date DESC
LIMIT
1
) ON true
WHERE
id LIKE 'AB%'
ORDER BY
createdAt DESC
所以这实际上将针对每一行运行子查询,并根据表 A 中给定行的日期从表 B 中选择最新行。
所以如果表A
会有一行
ID | 日期 |
---|---|
12 | 2021-05-XX |
和表B
:
ID | 日期 | 价值 |
---|---|---|
12 | 2022-01-XX | 99 |
12 | 2021-02-XX | 98 |
12 | 2020-03-XX | 97 |
12 | 2019-04-XX | 96 |
它只会将带有2021-02-XX
的行加入到表a
中。
在另一个例子中,与
表A
:
ID | 日期 |
---|---|
15 | 2021-01-XX |
表B
:
ID | 日期 | 价值 |
---|---|---|
15 | 2022-01-XX | 99 |
15 | 2021-02-XX | 98 |
15 | 2020-03-XX | 97 |
15 | 2019-04-XX | 96 |
它只会加入date: 2020-03-XX, value: 97
的行。
希望这很清楚,不太确定如何编写此查询来工作
感谢帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.