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