簡體   English   中英

有沒有一種方法可以在 window function 中使用 SQL 中的 ROWS BETWEEN 'variable' PRECEDING AND CURRENT ROW?

[英]Is there a way to use a declared variable in BigQuery SQL with ROWS BETWEEN 'variable' PRECEDING AND CURRENT ROW in a window function?

當前收到錯誤“窗口框架表達式必須是 [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

您可以使用 execute immediate 來執行動態查詢。 例如。 下面的查詢在 over 子句中使用了 var。

立即執行

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' 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM