逆透视(逆透视列怎么操作)

逆透视 逆透视

  • 按照数据库第一范式:一个实体中不应该包含重复类型的特性,对应到表就是:类似的值不能在一个表的多个列上重复

  • 创建表应该按照一维表的格式创建,记录产生信息。

  • 若是建表的时候创建为二维表,将所有的种类做为字段,则可能出现表的字段非常的多,当种类有所添加的时候,后续还要继续添加字段。

  • 一维表方便存储数据,同样也是便于后期查询

  • 二维表可以直观的表现数据的信息,是用于展示的报表和报告


1. 透视转换

1.1 使用标准SQL进行数据透视

–注意这里实现业务场景,在CASE WHEN语句中

–我们应该使用默认的ELSE NULL ,而不是ELSE 0。没有数据是没有数据,0是0

SELECT Name,

SUM(CASE WHEN Subject =‘语文’ THEN Temp1.Scores ElSE NULL END) AS 语文 ,

SUM(CASE WHEN Subject =‘数学’ THEN Temp1.Scores ELSE NULL END) AS 数学 ,

SUM(CASE WHEN Subject =‘英语’ THEN Temp1.Scores ELSE NULL END) AS 英语

FROM Temp1 GROUP BY Temp1.Name

结果:

Name 英语 数学 语文


李四 60 70 90

张三 逆透视80 90 100

【说明】:使用标准的SQL语句进行数据的透视转换,我们可以直白的发现透视转换,是分为三个阶段的:

分组–>扩展–>聚合

以上例说明:

  • 分组:我们按照Name字段进行分组,使每一个用户产生一条记录

  • 使用GROUP BY实现分组

  • 扩展:扩展是对列的扩展,使用case语句, 对三个科目(语文,数学,英语)扩展为列

  • 使用SELECT 配合CASE WHEN实现

  • 聚合:按照分组依据进行聚合,这里按照Name字段分组,使用SUM函数对Scores字段聚合

  • 使用任一聚合函数聚合

对照上述三个逻辑步骤:

  • Name字段:分组依据字段(分组元素)。指定要用于透视结果表的左侧列,也称为设置键

  • Subject字段:待扩展字段(待扩展元素)。透视结果表中的列头所在的列,也称为透视键,"语文,数学,英语"为目标列的列名的集合,又称为透视输出列

  • Scores字段:聚合字段(聚合元素)。透视结果表中的主要显示的数据就是来自这个字段的值,又称为透视值

1.2 使用T-SQL中pivot函数进行数据透视

【函数】:pivot

【作用】:行转列函数,SQL Server2005

【语法】

转载请说明出处 内容投诉内容投诉
九幽软件 » 逆透视(逆透视列怎么操作)