sql - 如何使用动态 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))
)
但他们都没有工作......我真的很感激任何帮助!
解决方案
推荐阅读
- android - 如何将图像位图传递给 Tensorflow Mobile 模型?
- javascript - 我需要使用“gridWrapper.innerHTML = gridWrapper.innerHTML+”打印一个表格
- java - Set 作为抽象数据类型和作为接口有什么区别?
- spring - 如何处理 RestTemplate 中的响应代码而不捕获异常?[弹簧靴]
- reactjs - 无法在 React with Apollo 中为 GraphQL 查询找到正确的打字稿接口
- python - 如何使用 openpyxl 仅解析工作簿中的特定工作表 - 或如何忽略空工作表?
- android - 想要在 react-native 应用的页脚展示广告
- c# - .Net/SQL 在 datetime2 上插入和选择不匹配
- python-2.7 - 如何将具有 2118 行和 22 列的 csv 文件重塑为 4 4 维
- vuejs2 - VueCLI + 静态资产 + 指令