簡體   English   中英

Bigquery - UNION ALL 具有不同參數的相同查詢

[英]Bigquery - UNION ALL same query with different parameters

我有一個非常大的查詢,我想 UNION ALL 相同的查詢但更改兩個不同的參數。 因此,為了使查詢更具可讀性,我想避免使用 UNION ALL。 這是我所擁有的一個簡短示例(無意義,但它給出了一個想法):

SELECT DISTINCT Name,'7 days' FROM T WHERE DATE(event_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND CURRENT_DATE())
UNION ALL
SELECT DISTINCT Name, '14 DAYS' FROM T WHERE DATE(event_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 14 DAY) AND CURRENT_DATE())

所以關鍵是要避免這個聯合並使其可擴展為更多聯合,只需更改間隔而不創建數百行代碼。

你可以這樣寫:

SELECT DISTINCT Name, CONCAT(d, ' days')
FROM T JOIN
     (UNNEST(ARRAY[7, 14]) d
     ON DATE(event_time) BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL d DAY) AND CURRENT_DATE())

這個查詢基本上是無意義的,因為它只是在每個時間段重復最近的名字。

但關鍵思想是UNNEST()一個包含你想要的值的數組,然后使用JOIN而不是WHERE

暫無
暫無

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

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