透视(Pivot)是一种数据转换技术,通常用于将行数据转换为列数据,以便更方便地进行分析和展示。在SQL中,透视可以通过聚合函数和CASE语句来实现。
假设我们有一个包含多列的SQL表 sales
,结构如下:
CREATE TABLE sales (
id INT PRIMARY KEY,
date DATE,
product VARCHAR(50),
region VARCHAR(50),
sales_amount DECIMAL(10, 2)
);
我们可以通过透视将 product
和 region
列转换为行,并计算每个组合的总销售额。假设我们已经进行了透视操作,生成了一个透视后的表 pivoted_sales
,结构如下:
CREATE TABLE pivoted_sales (
date DATE,
product VARCHAR(50),
region VARCHAR(50),
total_sales DECIMAL(10, 2)
);
如果我们需要取消透视,恢复到原始的 sales
表结构,可以使用以下SQL查询:
SELECT
id,
date,
product,
region,
sales_amount
FROM
(SELECT
date,
product,
region,
total_sales,
ROW_NUMBER() OVER (PARTITION BY date, product, region ORDER BY date) AS rn
FROM
pivoted_sales) AS temp
JOIN
sales s
ON
temp.date = s.date
AND temp.product = s.product
AND temp.region = s.region
AND temp.rn = 1;
ROW_NUMBER()
函数为每个 date
、product
和 region
组合生成一个唯一的行号。sales
表进行连接,恢复到原始的表结构。通过以上方法,可以取消透视包含多列的SQL表,恢复到原始的表结构。
领取专属 10元无门槛券
手把手带您无忧上云