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

如何在Snowflake中对每日销售数据进行规范化(列转行)

在Snowflake中实现销售数据的列转行转换

问题描述

现有每日销售数据集结构如下:

Product_IDMon_SalesTue_SalesWed_Sales
A001304050
A002102030
A003306090

需要将其转换为以下窄表结构:

Product_IDDay_of_SalesUnits_Sold
A001Mon_Sales30
A001Tue_Sales40
A001Wed_Sales50
A002Mon_Sales10
A002Tue_Sales20
A002Wed_Sales30
A003Mon_Sales30
A003Tue_Sales60
A003Wed_Sales90

解决方案

在Snowflake中,使用UNPIVOT语法可以直接实现这种宽表转窄表的需求,这是处理列转行场景的标准方式。

执行SQL

SELECT 
    Product_ID,
    Day_of_Sales,
    Units_Sold
FROM 
    your_sales_table  -- 替换为你的实际表名
UNPIVOT (
    Units_Sold FOR Day_of_Sales IN (Mon_Sales, Tue_Sales, Wed_Sales)
) AS unpivoted_result;

代码解释

  • UNPIVOT子句里,Units_Sold是用来存储原表中销售数值的新列名;
  • Day_of_Sales是用来存储原表日期列名称(比如Mon_Sales)的新列名;
  • IN括号内列出所有需要转换的日期销售列,后续如果有更多日期列(比如Thu_Sales),直接添加到括号里即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:50:00