sql列转行 行转列
warning:
这篇文章距离上次修改已过416天,其中的内容可能已经有所变动。
在SQL中,将列转换为行通常使用UNION ALL操作,而将行转换为列通常使用PIVOT操作(在支持该操作的SQL版本中)。
以下是一个简单的例子:
假设有一个表sales,结构如下:
year | product | amount
-----|---------|-------
2020 | A | 100
2020 | B | 150
2021 | A | 200
2021 | B | 240将product列转换为行,可以使用UNION ALL:
SELECT year, 'A' AS product, amount FROM sales WHERE product = 'A'
UNION ALL
SELECT year, 'B' AS product, amount FROM sales WHERE product = 'B';结果将是:
year | product | amount
-----|---------|-------
2020 | A | 100
2021 | A | 200
2020 | B | 150
2021 | B | 240如果想要使用PIVOT将行转为列(以支持PIVOT的SQL数据库为例):
SELECT year,
SUM(CASE WHEN product = 'A' THEN amount ELSE 0 END) AS A,
SUM(CASE WHEN product = 'B' THEN amount ELSE 0 END) AS B
FROM sales
GROUP BY year;结果将是:
year | A | B
-----|------|------
2020 | 100 | 150
2021 | 200 | 240这些操作可以根据具体的数据库系统(如MySQL, SQL Server, PostgreSQL等)的功能进行调整。
评论已关闭