表的纵横表变换

helloworld_34035044
• 阅读 243

​ 在我们平时使用数据库时,经常会发现有的表列数过多,为了提高效率,我们经常对要查询的表来纵横表变换。

一.行转列

1.PIVOT函数

PIVOT(任意聚合函数 FOR 列名 IN(类型))

    其中,【聚合函数】聚合的字段,是需要转化为列值的字段;【列名】是需要转化为列标识的字段,【类型】即是需要的结果展示,【类型】中可以指定别名; IN中还可以指定子查询。

2、使用 MAX 和 DECODE 函数

3、使用 CASE WHEN 和 GROUP BY

二、列转行

1、使用对应的UNPIVOT函数

函数说明:

    UNPIVOT(自定义列名1【列的值】  FOR  自定义列名2【列名】  IN(【列名】))

    其中,【列的值】字段,是将我们的值字段转为行数据中的【自定义列名1】;【列名】是将我们的列标题字段转为行数据中的【自定义列名2】,【列名】即是转为行的列名。

2.用union all 进行拼接

点赞
收藏
评论区
推荐文章
CuterCorley CuterCorley
3年前
Python SQLite常见异常及解决办法
1.sqlite获取某一列数值中的最大值一直返回9问题及解决办法sqlite获取最大值一般使用max函数来获取,但是返回值一直是9。原因是因为该列字段值类型不是数值类型。可以通过cast来改变字段值类型,使用以下语句解决:pythonselectmax(cast(列名asint))from表名2.sqlite3.Opera
Wesley13 Wesley13
2年前
SQL 查询语句
4.2单表查询  4.2.1列名(表名)的别名(as可以不加)     给列名取别名既可以加as也可以不加。 (2008Sage、lower(Sdept)等可计算但无列名,需要指定列名)     原列名既可以作为判断条件,也可以排序;列名的别名只能用作排序,不能用作判断条件。     表名也可以有别名
Stella981 Stella981
2年前
Hive中使用row_number() over()创建自增主键
虽然hive中的表没有主键一说,但是实际数据开发中经常需要将hive中计算好的表导出到mysql库中供业务使用或开发调用,而mysql表是需要有主键的,在hive中我们可以使用row\_number()over()窗口函数来生成一个自增序列的字段,在将表导出到mysql库中的时候就可以指定该字段为主键,使用起来还是挺方便的。select
Wesley13 Wesley13
2年前
MySQL数据查询(重点)
1.查询所有列  \为所有列select\fromtable\_name;2.查询指定列selectid,agefromtable\_name;3.查询时添加常量列本次查询有效,不会添加到表中,只显示 可以用as来命名本列名select'java0328'fromtable\_name;
Wesley13 Wesley13
2年前
mysql——GROUP BY和HAVING
GROUPBY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。select子句中的列名必须为分组列或列函数,列函数对于groupby子句定义的每个组返回一个结果。某个员工信息表结构和数据如下:  id  name  dept  salary  edlevel     hiredate   1  张
Easter79 Easter79
2年前
SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。
语法join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。Join和Key有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行join。数据库中的表可通过键将彼此联系起来。主键(PrimaryKey)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这
Wesley13 Wesley13
2年前
Oracle 行列转换函数pivot、unpivot的使用(二)
一、行转列pivot关键函数pivot,其用法如下pivot(聚合函数for列名in(类型))select\fromtable\_namepivot(max(column\_name)                           行转列后的列的值value,聚合函数是必须要有的                  
Wesley13 Wesley13
2年前
ThinkPHP 根据关联数据查询 hasWhere 的使用实例
很多时候,模型关联后需要根据关联的模型做查询。场景:广告表(ad),广告类型表(ad\_type),现在需要筛选出广告类型表中id字段为1且广告表中status为1的列表先看关联的设置部分 publicfunctionadType(){return$thisbelongsTo('A
Stella981 Stella981
2年前
PostgreSQL窗口函数分析
今天看了一下PostgreSQLrow\_number的实现过程。之前一直好奇窗口函数是什么,原理是什么,今天稍稍解惑。下面就以row\_number为例进行介绍:窗口函数:窗口函数在一组表行中执行计算,这些表行以某种方式与当前行相关。这与使用聚合函数可以完成的计算类型相当。但是,窗口函数不会导致行被分组到单个输出行,就像非窗口聚合调用一样。
Wesley13 Wesley13
2年前
mysql存储过程造数
性能测试时,数据库表通常需要很多数据,此时我们可以用存储过程来造数,以下代码mysql、Oracle都可以用首先,先查看数据库表的设计,可以看到每张表有多少字段,分别都是什么类型,哪个字段是自动增长的等。然后根据表的结构写一个insert语句即可。其次,看哪些表涉及到性能问题,然后对这些表进行造数即可。!(https://oscimg.osc