SQL中的PIVOT和UNPIVOT操作如何进行数据透视?

我对SQL中的PIVOT和UNPIVOT操作不太熟悉,请问它们是如何进行数据透视的呢?我知道PIVOT可以将行转列,UNPIVOT则是将列转行。但是具体地说,PIVOT和UNPIVOT如何使用,它们的语法和参数都有哪些需要掌握的?我想了解这些内容来更好地应用它们进行数据透视。请有经验的SQL专家指导一下,谢谢!

提问时间:2023-07-22 05:13:07 编辑时间:2023-07-22 05:13:09 提问者: 青铜古屋
  • AQUARIUS_88
    1

    PIVOT和UNPIVOT是SQL中用于数据透视的常用操作。PIVOT可以将行数据转换为列数据,UNPIVOT则相反,将列数据转换为行数据。

    在PIVOT操作中,需要指定一个聚合函数(如SUM、AVG等)和一个PIVOT列,这个列将会成为新数据透视表中的列,其他非PIVOT列转换为新表中的行,并且需要在PIVOT列后面跟随一个FOR子句,用于指定PIVOT列需要转换的值,即新表中的列。

    UNPIVOT操作则需要指定需要转换为行的列,转换结果将会包含三列:UNPIVOT列、所在的列名和该列对应的值。

    具体语法如下:

    PIVOT:

    SELECT <非PIVOT列>, [<PIVOT值1>, <PIVOT值2>, …] FROM <表名> PIVOT (<聚合函数> (<列名>) FOR <PIVOT列> IN ([<PIVOT值1>, [<PIVOT值2>, …]])) AS <新表名>

    UNPIVOT:

    SELECT <非UNPIVOT列>, <列名>, <值> FROM <表名> UNPIVOT (<值> FOR <列名> IN ([<列1>, [<列2>, …]])) AS <新表名>

    需要注意的是,PIVOT和UNPIVOT操作需要在特定版本的SQL Server中支持。

    回答时间:2023-07-22 05:13:12