You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL多列查询需求:生成多组编码-值列适配Looker维度

解决方案

首先修正原SQL的语法错误(移除SELECT子句末尾列的多余逗号),再通过CTE + 窗口函数 + 条件聚合实现多组unique_code_n&value_n列的生成,适配Looker的维度拖拽需求:

WITH combined_data AS (
    -- 整合符合要求的基础数据,避免重复unique_code
    SELECT
      type_code_1 AS unique_code,
      product_id,
      type_id,
      value
    FROM Table1
    UNION
    SELECT
      type_code_2 AS unique_code,
      product_id,
      type_id,
      value
    FROM Table2
    WHERE type_code_2 NOT IN (SELECT DISTINCT type_code_1 FROM Table1)
),
ranked_data AS (
    -- 给每个product_id+type_id组合下的unique_code排序,生成组序号
    SELECT
        product_id,
        type_id,
        unique_code,
        value,
        ROW_NUMBER() OVER (PARTITION BY product_id, type_id ORDER BY unique_code) AS rn
    FROM combined_data
)
SELECT
    product_id,
    type_id,
    -- 生成第一组字段
    MAX(CASE WHEN rn = 1 THEN unique_code END) AS unique_code_1,
    MAX(CASE WHEN rn = 1 THEN value END) AS value_1,
    -- 生成第二组字段
    MAX(CASE WHEN rn = 2 THEN unique_code END) AS unique_code_2,
    MAX(CASE WHEN rn = 2 THEN value END) AS value_2,
    -- 生成第三组字段,可按需扩展
    MAX(CASE WHEN rn = 3 THEN unique_code END) AS unique_code_3,
    MAX(CASE WHEN rn = 3 THEN value END) AS value_3,
    -- 如需更多组,继续复制上述结构并修改序号即可
    MAX(CASE WHEN rn = 4 THEN unique_code END) AS unique_code_4,
    MAX(CASE WHEN rn = 4 THEN value END) AS value_4
FROM ranked_data
GROUP BY product_id, type_id;

关键逻辑说明

  1. combined_data CTE:完成原需求的去重数据合并,确保unique_code无重复。
  2. ranked_data CTE:通过ROW_NUMBER()窗口函数,给同一product_id+type_id下的每条数据分配组序号,用于后续列转换。排序规则可通过ORDER BY调整(比如按value排序)。
  3. 条件聚合生成多列:利用MAX(CASE...)将行数据转成列,每对unique_code_n和value_n对应一组维度字段,直接支持Looker的拖拽选择。

扩展说明

如果需要更多组字段,只需复制MAX(CASE...)的代码块,将序号rn = N和别名unique_code_N/value_N同步递增即可。

内容的提问来源于stack exchange,提问作者avonturier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:52:57