簡體   English   中英

如何在沒有“IN”參數的情況下在 BigQuery 中生成 PIVOT 表

[英]How to PIVOT table in BigQuery without "IN" argument

所以我有一個看起來像這樣的表:

列表 價值 日期
汽車 10000 2023-01-28
卡車 20000 2022-12-25
貨車 55 2023-01-05
拖車 560 2023-11-11

但我想要 pivot 它所以列表值成為列並且值成為當前值列,如下所示:

日期 汽車 卡車 貨車 拖車
2023-01-28 10000 北美 北美 北美
2022-12-25 北美 20000 北美 北美
2023-01-05 北美 北美 55 北美
2023-11-11 北美 北美 北美 560

最好的方法是什么? 我試過這個:

SELECT * FROM 
(select * from `table`)
pivot(sum(list) for list in list)

但這沒有用。 想法?

嘗試使用CASE表達式:

SELECT date, 
       MAX(CASE WHEN list = 'cars'   THEN value END) AS cars,
       MAX(CASE WHEN list = 'trucks' THEN value END) AS trucks,
       MAX(CASE WHEN list = 'vans'   THEN value END) AS vans
FROM <your_table>
GROUP BY date

使用下面的簡單方法

select * from your_table 
pivot (any_value(value) for list in ('cars', 'trucks', 'vans', 'trailers'))       

如果應用於您問題中的樣本數據 - output 是

在此處輸入圖像描述

您可以動態構建該查詢(因此您不需要顯式指定值)並使用EXECUTE IMMEDIATE來運行它 - SO 上有很多此類技術的示例!

暫無
暫無

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

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