У меня есть таблица, в которой я хочу: 1) Проверить тех посетителей (VisitorID), которые соответствуют требованию 2) Получить все времена, когда эти посетители пришли на мой сайт.
Я пытался сделать это, объединив свой первый запрос со всеми моими условиями и еще один запрос, в котором я получаю остальные соответствующие переменные.
SELECT ID, h.Info, h.Action
FROM `table` as A,
UNNEST (hits) as h
WHERE (h.Info LIKE '%PPP%'
OR h.Info LIKE '%BBB%'
OR h.Info LIKE '%SSS%'
OR h.Info LIKE '%FFF%') AND
h.Category LIKE '%Lock%' AND
(h.Action LIKE '%Regist%' OR h.Action LIKE '%NotR%') AND
h.Label LIKE '%Success%'
JOIN
SELECT ID, h.Info, h.Action, time, visits, EXTRACT(TIME FROM TIMESTAMP_SECONDS(StartTime)) AS time_visit, PARSE_DATE("%Y%m%d", date) AS date_visit
FROM `table`,
UNNEST (hits) as h
WHERE (h.Info LIKE '%PPP%'
OR h.Info LIKE '%BBB%'
OR h.Info LIKE '%SSS%'
OR h.Info LIKE '%FFF%') AND
date > "20190529") AS B ON A.ID = B.ID
Я несколько раз менял JOIN, включал/исключал скобки, и у меня кончились идеи.
Я использовал это, и это сработало, поэтому я принял это.
это было в bigquery? если так - выдаст ошибку - точно! впрочем - мне просто было интересно


пойду на cte версию
with cte as
(
SELECT ID, h.Info, h.Action
FROM `table` as A,
UNNEST (hits) as h
WHERE (h.Info LIKE '%PPP%'
OR h.Info LIKE '%BBB%'
OR h.Info LIKE '%SSS%'
OR h.Info LIKE '%FFF%') AND
h.Category LIKE '%Lock%' AND
(h.Action LIKE '%Regist%' OR h.Action LIKE '%NotR%') AND
h.Label LIKE '%Success%'
),
cte1 as
(
SELECT ID, h.Info, h.Action, time, visits, EXTRACT(TIME FROM TIMESTAMP_SECONDS(StartTime)) AS time_visit, PARSE_DATE("%Y%m%d", date) AS date_visit
FROM `table`,
UNNEST (hits) as h
WHERE (h.Info LIKE '%PPP%'
OR h.Info LIKE '%BBB%'
OR h.Info LIKE '%SSS%'
OR h.Info LIKE '%FFF%') AND
date > "20190529"
) select cte.*,cte1.* from cte join cte1 on cte.id=cte1.id
почему вы отметили свой вопрос тегом bigquery? принятый ответ не будет работать с bq!