Моя проблема похожа на LEFT JOIN ON на самую последнюю дату в Google BigQuery Однако я хотел бы присоединиться к возможным 1 (или более) последним дням, если существует более 1 с одним именемв таблице А.
TABLE A
| name | timestamp | a_data |
| ---- | ------------------- | ------ |
| 1 | 2018-01-01 11:10:00 | a |
| 1 | 2018-01-01 11:10:00 | h |
| 2 | 2018-01-01 12:20:00 | b |
| 3 | 2018-01-01 13:30:00 | c |
TABLE B
| name | timestamp | b_data |
| ---- | ------------------- | ------ |
| 1 | 2018-01-01 11:00:00 | w |
| 1 | 2018-01-01 10:30:00 | i |
| 1 | 2018-01-01 10:00:00 | j |
| 2 | 2018-01-01 12:00:00 | x |
| 3 | 2018-01-01 13:00:00 | y |
| 3 | 2018-01-01 13:10:00 | y |
| 3 | 2018-01-01 13:10:00 | z |
Что я хочу сделать, это
- Длякаждая строка в Таблице A
SQL LEFT JOIN
самая последняя запись в Таблице B, которая предшествует ей. - Когда существует более одной возможности, возьмите последнюю.
- Когда существует более одной изто же имя в таблице A, тогда не последний, а второй последний.И так далее.
По сути, это означает, что я хочу связать каждую строку в Таблице A с самой последней (если еще не принятой) строкой в Таблице B, если это возможно, в противном случае просто отбросьте строку.
Целевой результат
| name | timestamp | a_data | b_data |
| ---- | ------------------- | ------ | ------ |
| 1 | 2018-01-01 11:10:00 | a | w |
| 1 | 2018-01-01 11:10:00 | h | i | <-- note h, i
| 2 | 2018-01-01 12:20:00 | b | x |
| 3 | 2018-01-01 13:30:00 | c | z | <-- note z, not y
Кроме того, фактически есть 3 столбца (включая имя), которые являются идентификаторами для каждой строки в каждой таблице.
Требуется ли итерация илиМогу ли я сделать это по-другому?Я перепробовал все ответы в предыдущем вопросе, но у меня не получилось.Любая помощь очень ценится!