在MySQL中,列转行通常指的是将多列数据转换为单行数据,或者将一行数据拆分为多行数据。这种操作在数据处理和分析中非常常见,尤其是在需要对数据进行透视或展开时。
假设我们有一个名为sales
的表,包含以下列:product_id
、year
、quarter
和sales_amount
。现在我们希望将每个产品的销售数据按年份和季度展开为多行。
SELECT product_id, year, quarter, sales_amount
FROM (
SELECT product_id,
CASE WHEN quarter = 1 THEN 'Q1' ELSE NULL END AS Q1,
CASE WHEN quarter = 2 THEN 'Q2' ELSE NULL END AS Q2,
CASE WHEN quarter = 3 THEN 'Q3' ELSE NULL END AS Q3,
CASE WHEN quarter = 4 THEN 'Q4' ELSE NULL END AS Q4
FROM sales
) AS subquery
UNION ALL
SELECT product_id, year, 'Q1' AS quarter, Q1 AS sales_amount
FROM subquery WHERE Q1 IS NOT NULL
UNION ALL
SELECT product_id, year, 'Q2' AS quarter, Q2 AS sales_amount
FROM subquery WHERE Q2 IS NOT NULL
UNION ALL
SELECT product_id, year, 'Q3' AS quarter, Q3 AS sales_amount
FROM subquery WHERE Q3 IS NOT NULL
UNION ALL
SELECT product_id, year, 'Q4' AS quarter, Q4 AS sales_amount
FROM subquery WHERE Q4 IS NOT NULL;
通过以上方法,可以有效地解决MySQL中列转行操作中遇到的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云