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

Snowflake表Unpivot时如何将月份列替换为数字而非名称?

解决Snowflake UNPIVOT后月份名称转数字的问题

Snowflake的UNPIVOT语法中,IN子句里的AS仅用于给原列名指定别名(比如原列名含特殊字符时),无法直接将列名映射为数字。要得到数字格式的月份,需要在UNPIVOT完成后通过转换逻辑实现,以下是两种可行方案:

方案1:使用CASE语句映射

SELECT 
  empid,
  CASE month
    WHEN 'jan' THEN 1
    WHEN 'feb' THEN 2
    WHEN 'mar' THEN 3
    WHEN 'apr' THEN 4
  END AS month,
  sales
FROM monthly_sales
UNPIVOT (sales FOR month IN (jan, feb, mar, apr))
ORDER BY empid;

方案2:使用DECODE函数简化写法

Snowflake支持DECODE函数,能更简洁地完成字符串到数字的映射:

SELECT 
  empid,
  DECODE(month, 'jan', 1, 'feb', 2, 'mar', 3, 'apr', 4) AS month,
  sales
FROM monthly_sales
UNPIVOT (sales FOR month IN (jan, feb, mar, apr))
ORDER BY empid;

两种方法都是先通过UNPIVOT将列转为月份名称字符串,再将字符串映射为对应数字,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:27:03