1、为了大家清楚,首先我重头开始,来建立库表,并一步一步的进行说明和演示,首先建表如下例子:
2、说明一下这个表的结构,日期、统计代码、统计荏半吨蛸名称、数量。看到这里相信大家已经明白这个例子已经非常典型了。首先以行的形式插入数据。因为按这个库表的结构大家应用清楚是行的形式存储了,也就是按日期和统计名称来展示这个名称的数量。插入数据
3、从上图可以看到,我按日期、统计荏半吨蛸名称顺序排序,首先展示的是18年的1月13号的各个名称的数量,然后再展示其他日期的各个名称的数匪犬挚驰量,这是典型的行展示,那么,如果我想把各个名称展示成列的形式展示,也就是说18年1月13号的我只展示一行,每一列展示各个统计名称的数量,那么该如何做呢?相信大家都会想到子查询 如下:
4、查询结果如下
5、从上图可以看到现在都变成了列的形式,这就说明以上的子查询转换成了列的形式,这种方式比较麻烦,当然我们还用其他办法,这里不再过多描述。现在只介绍一种,在oracle11版本已经支持了如下 函数的写法,如下:
6、Ok,写到这里,我们来看一下上图写法的查询结果,如下可以看到和上面的方法的结果是一样的。
7、下面再来看列转行,下面就上述的列再转回去。那么如何转呢?首先想到的第一种方法就是使用union。查询多个列的union的集合就形成了行。那么再来介绍oracle11是如何处理的
8、上图中偷个懒,我把画红框的地方作为列的表,也就是上面例子中的查询语句。我将画红框的表的查询结果当做一个表(列的形式),现在转换成行的形式如下:
9、由此可以看到,和最初建表的结果是一样的。这就是oracle11的简单之处。