# #sql #google-bigquery
Вопрос:
В настоящее время появляется ошибка «Выражение обрамления окна должно быть литералом или параметром в [x:x]», оно отлично работает, используя только число 5, но это часто используется в моем сценарии.
DECLARE variable INT64;
SET variable = 5;
SELECT col1, value, time,
CASE
WHEN "Bla" = "Bla"
THEN MIN(value) OVER (PARTITION BY col1 ORDER BY time ROWS BETWEEN variable PRECEDING AND CURRENT ROW)
ELSE NULL
END
AS MinVal
FROM data
Ответ №1:
Вы можете использовать команду выполнить немедленно для выполнения динамических запросов. Например. Ниже запрос использует var в предложении over.
declare var int64 default 5;
execute immediate
'select min(1) over(order by street_number ROWS BETWEEN '||var||' PRECEDING AND CURRENT ROW) from' ||'`bigquery-public-data.austin_311.311_service_requests` limit 100'