[英]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.