Моя таблица в BigQuery выглядит так
+--------------------+------------+--------+--------+
| TimeStamp | Session | Type | Result |
+--------------------+------------+--------+--------+
| 7/28/2020 16:05:02 | 1595952288 | Select | 53402 |
| 7/28/2020 16:05:16 | 1595952288 | Menu | 2 |
| 7/28/2020 16:05:25 | 1595952288 | Select | 53405 |
| 7/28/2020 16:05:36 | 1595952288 | Menu | 1 |
+--------------------+------------+--------+--------+
Я хотел бы получить данные, чтобы они выглядели так, как показано ниже
+--------------------+------------+--------+--------+---------+
| TimeStamp | Session | Type | Result | Confirm |
+--------------------+------------+--------+--------+---------+
| 7/28/2020 16:05:02 | 1595952288 | Select | 53402 | 2 |
| 7/28/2020 16:05:25 | 1595952288 | Select | 53405 | 1 |
+--------------------+------------+--------+--------+---------+
В основном, что это за данные человек находится в Сессии в приложении, он вводит номер 5 di git, затем его просят подтвердить его.
- Номер Five-di git будет под Type = Select
- 1 или 2 будут в меню Type =, 1 - это подтверждено, 2 - неверно, и они хотят повторно ввести 5 di git число
Я пытаюсь t ie в следующей строке к числу 5 di git на основе следующей отметки времени и перенести его в ту же строку, чтобы сообщить об этом.
Вот SQL, который я создал, не думаю, что он правильный, так как он производит дубликаты. Я думаю, что есть способ получше, но он не очень эффективен. На самом деле, это может быть просто неправильно.
Select DISTINCT
table1.Session,
table1.Result,
subtable1.Confirm
FROM
`googleBQ_table` as table1
Left Join (
Select
Result as Confirm,
Session,
MAX(TimeStamp)
FROM
`googleBQ_table`
WHERE Type = 'Menu' and LENGTH(Result) < 2
group by 1,2) as sub_table1 on sub_table1.Session = table1.Session
WHERE
table1.Session = '1595952288' and LENGTH(table1.Result) = 5
Заранее благодарю