钟二网络头像

钟二网络

探索SQL查询技巧、Linux系统运维以及Web开发前沿技术,提供一站式的学习体验

  • 文章92531
  • 阅读1252165
首页 SQL 正文内容

如何将竖向变横向的sql语句

钟逸 SQL 2025-09-03 22:05:58 6

在SQL查询中,有时需要将查询结果从竖向(列)排列转换为横向(行)排列。这在创建报表、汇总数据或与其他数据源集成时非常有用。

使用PIVOT运算符

将竖向数据转换为横向的常用 是使用PIVOT运算符。PIVOT运算符将一列值(通常为类别或日期)作为行,将另一列值(通常为数值或字符串)作为列。语法如下:

sql

SELECT *

FROM (

SELECT category, value

FROM table_name

) AS subquery

PIVOT (

SUM(value)

FOR category IN ([category1], [category2], ...)

) AS pivot_table;

使用UNPIVOT运算符

另一种将竖向数据转换为横向的 是使用UNPIVOT运算符。UNPIVOT运算符将多列数据转换为两列:一列为列名,另一列为值。语法如下:

sql

SELECT *

FROM table_name

UNPIVOT (

value

FOR category IN ([category1], [category2], ...)

) AS unpivot_table;

代码示例

下面是一个使用PIVOT运算符将竖向销售数据转换为横向销售数据的示例:

sql

SELECT *

FROM (

SELECT product, year, sales

FROM sales_table

) AS subquery

PIVOT (

SUM(sales)

FOR year IN ([2021], [2022])

) AS pivot_table;

其他提示

使用PIVOT和UNPIVOT运算符时,需要考虑以下事项:

* 确保要转换的列具有正确的类型(PIVOT为字符串或日期,UNPIVOT为数值或字符串)。

* 对于PIVOT,需要指定要转换的列以及将用作行的列。

* 对于UNPIVOT,需要指定要转换的列以及将用作值的列。

文章目录
    搜索