Sql Bigquery-使用不同参数联合所有相同查询

Sql Bigquery-使用不同参数联合所有相同查询,sql,google-bigquery,Sql,Google Bigquery,我有一个非常大的查询,我想合并所有相同的查询,但更改两个不同的参数。因此,为了使查询更具可读性,我希望避免使用UNIONALL。这里有一个简短的例子(没有意义,但它给出了一个想法) 关于我所拥有的: 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 DIST

我有一个非常大的查询,我想合并所有相同的查询,但更改两个不同的参数。因此,为了使查询更具可读性,我希望避免使用UNIONALL。这里有一个简短的例子(没有意义,但它给出了一个想法) 关于我所拥有的:

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())
这个查询基本上没有意义,因为它只是在每个时间段重复最近的名称

但是关键的想法是
unest()
一个包含所需值的数组,然后使用
JOIN
而不是
WHERE