【问题标题】:How to use dynamic pivot table in bigquery? [duplicate]如何在 bigquery 中使用动态数据透视表? [复制]
【发布时间】:2026-01-29 20:45:01
【问题描述】:

我的目标是在 Bigquery 中创建一个动态数据透视表,为此我计划这样做:

  • 根据选择的 distinct 声明数组
  • 在数据透视语句 FOR .. IN UNNEST(ARRAY) 中使用此数组

这里是示例代码:

DECLARE cat ARRAY <STRING> ;
SET cat = ( SELECT  ARRAY_AGG( distinct product_category_level_3) FROM categories );


SELECT *
FROM (
    SELECT
        customer_id
        , product_category_level_3
        , last_variant_bought_id

    FROM table
)PIVOT(
    MAX(last_variant_bought_id)
    FOR product_category_level_3 IN UNNEST(cat)
)

但是,这会在查询结束时引发语法错误:意外的“)”。 我不知道为什么会这样? 对这个错误有什么想法或最好的方法吗?

最好的

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    需要声明STRING变量,然后EXECUTE_IMMEDIATE

    DECLARE cat STRING ;
    SET cat = ( SELECT  STRING_AGG( distinct product_category_level_3) FROM categories );
    
    EXECUTE_IMMEDIATE """
    SELECT *
    FROM (
        SELECT
            customer_id
            , product_category_level_3
            , last_variant_bought_id
    
        FROM table
    )PIVOT(
        MAX(last_variant_bought_id)
        FOR product_category_level_3 IN (?)
    )
    """
    USING cat
    

    【讨论】:

    • 请提供一些数据样本