数据库

 首页 > 数据库 > MySql > 锋利的SQL-SQL Server的表旋转(行列转换)

锋利的SQL-SQL Server的表旋转(行列转换)

分享到:
【字体:
导读:
         摘要:所谓表旋转,就是将表的行转换为列,或是将表的列转换为行,这是从SQL Server 2005开始提供的新技术。因此,如果希望使用此功能,需要将数据库的兼容级别设置为90。表旋转在某些方面也是解决了表的数据存储和实际需要之间的矛盾。 ...

锋利的SQL-SQL Server的表旋转(行列转换)

所谓表旋转,就是将表的行转换为列,或是将表的列转换为行,这是从SQL Server 2005开始提供的新技术。因此,如果希望使用此功能,需要将数据库的兼容级别设置为90。表旋转在某些方面也是解决了表的数据存储和实际需要之间的矛盾。例如,图9-4所示的是一个典型的产品销售统计表,这种格式虽然便于阅读,但是在进行数据表存储的时候却并不容易管理,产品销售数据表通常需要设计成图9-5所示的结构。这样就带来一个问题,用户既希望数据容易管理,又希望能够生成一种能够容易阅读的表格数据,这时候就可以使用表旋转技术。

          

  9-4 产品销售表     

  9-5 数据表结构

9.4.1 PIVOT运算符

PIVOT运算符用于将表的行转换为列,并能同时对行执行聚合运算。其语法格式如下:

SELECT <非旋转列>,

    [第一个旋转列] AS <列名>,

    [第二个旋转列] AS <列名>,

    ...

    [最后的旋转列] AS <列名>

FROM

    (