首页 > 解决方案 > 如何使用动态 SQL / 脚本在具有未知日期范围的 BigQuery 中进行旋转

问题描述

我正在尝试使用 PIVOT 将我的数据从长格式转换为宽格式,但我不知道我有多少列(并且每天都在增加)。在阅读了一些 stackoverflow 帖子后,我发现我需要使用动态 SQL 来完成。但 Google BigQuery 的 SQL 语言略有不同。我已经调试了很长时间,非常感谢对此的任何帮助!

所以我的数据是这样的:

fips_code   date        count
53033       2020-03-04  6.4
53033       2020-03-05  7.6
53033       2020-03-06  9.0
53033       2020-03-07  11.4
6085        2020-03-04  2.4
6085        2020-03-05  3.4
6085        2020-03-06  4.4
6085        2020-03-07  5.1

我想把它改成

fips_code   2020-03-04 2020-03-05 2020-03-06 2020-03-07
53033         6.4         7.6       9.0        11.4        
6085          2.4         3.4       4.4        5.1

我试图使用的代码是

DECLARE query STRING;
DECLARE date_range ARRAY<DATE>;


SET date_range =  (SELECT DISTINCT date FROM `covid-atlas.covid_atlas_test.vaccine_fully_vaccinated_cdc` ORDER BY date DESC)

SET query = 'SELECT fips, date from `covid-atlas.covid_atlas_test.covid_confirmed_cdc`' PIVOT (sum(count) for date in date_range;

EXECUTE IMMEDIATE query

或者使用 GENERATE_DATE_ARRAY 函数:

SELECT *
FROM `covid-atlas.covid_atlas_test.vaccine_fully_vaccinated_cdc` 

PIVOT (
      SUM(count) 
      FOR date IN (GENERATE_DATE_ARRAY('2020-11-21', '2020-12-31', INTERVAL 1 DAY))
  )

但他们都没有工作......我真的很感激任何帮助!

标签: sqlgoogle-bigquerypivot

解决方案


推荐阅读