У меня длинный SQL-запрос, похожий на этот:
SELECT AVG(total_sum) AS avg_total_sum, COUNT(*) AS cnt
FROM (
SELECT order_id, ...
FROM `project.dataset.orders`
WHERE order_id NOT IN (
SELECT order_id
FROM `project.dataset.orders`
CROSS JOIN UNNEST(gifts) AS gifts
WHERE ...
)
)
И это хорошо работает, но я бы хотел упростить код, разбив его на временные таблицы, например:
WITH t_ids AS (
SELECT order_id
FROM `project.dataset.orders`
CROSS JOIN UNNEST(gift_details) AS gift_details
WHERE ...
)
SELECT AVG(total_sum) AS avg_total_sum, COUNT(*) AS cnt
FROM (
SELECT order_id, ...
FROM `project.dataset.orders`
WHERE order_id NOT IN t_ids
)
Но это приводит к следующей ошибке:
Синтаксическая ошибка: ожидается "(" или ключевое слово UNNEST, но получен идентификатор "t_ids"
Я пытался добавить скобки, UNNEST
, но, похоже, он не работает с временной таблицей. Как решить проблему?