在Oracle数据库中,可以使用UNPIVOT
操作将宽格式的数据转换为长格式
假设我们有一个宽格式的表sales_data_wide
,其结构如下:
CREATE TABLE sales_data_wide (
product_id INT,
q1_sales NUMBER,
q2_sales NUMBER,
q3_sales NUMBER,
q4_sales NUMBER
);
该表包含了每个产品在四个季度的销售数据。
现在,我们希望将这些数据转换为长格式,即每个产品的每个季度的销售数据都成为单独的一行。我们可以使用UNPIVOT
操作来实现这一转换:
SELECT product_id, quarter, sales
FROM sales_data_wan
UNPIVOT (
sales FOR quarter IN (q1_sales, q2_sales, q3_sales, q4_sales)
);
执行上述查询后,我们将得到一个长格式的结果集,其中每一行都包含了一个产品的一个季度的销售数据。
UNPIVOT
操作的FOR
子句指定了要转换的列名(在本例中为quarter
),IN
子句则指定了要转换的具体列(在本例中为q1_sales
, q2_sales
, q3_sales
, q4_sales
)。sales
是转换后结果集中的新列名,用于存储原宽格式表中各季度销售数据的值。
领取专属 10元无门槛券
手把手带您无忧上云