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

Snowflake中按客户ID与响应时间实现Survey Responses表行转列

Snowflake 行转列实现方案

针对你的需求,用GROUP BY结合CASE WHEN就能准确实现行转列,之前出现ID和响应时间不匹配的问题,大概率是没按customer_ID和response_time做分组,导致不同时间的数据被错误聚合了。

直接用以下SQL语句:

SELECT
    customer_ID,
    response_time,
    MAX(CASE WHEN disp_name = 'Rating Scale' THEN value END) AS Scale,
    MAX(CASE WHEN disp_name = 'Score' THEN value END) AS Score
FROM Survey_Responses
GROUP BY customer_ID, response_time
ORDER BY customer_ID, response_time;

说明:

  • 用GROUP BY customer_ID, response_time确保每个分组都是同一客户同一响应时间的两条数据(Rating Scale和Score)
  • MAX(CASE...)的作用是提取分组内对应disp_name的value值,因为每个分组里每个CASE条件只会命中一条数据,MAX/MIN都能拿到唯一的非空值
  • 如果value字段是字符串类型,而你需要Scale/Score为数值型,可以用TRY_CAST转换,比如:
    MAX(CASE WHEN disp_name = 'Rating Scale' THEN TRY_CAST(value AS INT) END) AS Scale
    

如果你之前的SQL没加GROUP BY,或者分组字段不全,就会出现不同response_time的数据被合并,导致ID和时间不匹配的问题,按上面的写法就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:33:10