oracle 数字类型行转列,oracle行转列
一、PIVOT实例
1. 建表
建立一个销售情况表,其中,year字段表示年份,quarter字段表示季度,amount字段表示销售额。quarter字段分别用Q1, Q2, Q3, Q4表示一、二、三、四季度。
CREATE TABLE SalesByQuarter
( year INT, -- 年份
quarter CHAR(2), -- 季度
amount MONEY -- 总额
)
2. 填入表数据
使用如下程序填入表数据。
SET NOCOUNT ON
DECLARE @index INT
DECLARE @q INT
SET @index = 0
DECLARE @year INT
while (@index < 30)
BEGIN
SET @year = 2005 + (@index % 4)
SET @q = (CAST((RAND() * 500) AS INT) % 4) + 1
INSERT INTO SalesByQuarter VALUES (@year, 'Q' + CAST(@q AS CHAR(1)), RAND() * 10000.00)
SET @index = @index + 1
END
3、如果我们要比较每年中各季度的销售状况,要怎么办呢?有以下两种方法:
(1)、使用传统Select的CASE语句查询
在SQL Server以前的版本里,将行级数据转换为列级数据就要用到一系列CASE语句和聚合查询。虽然这种方式让开发人员具有了对所返回数据进行高度控制的能力,但是编写出这些查询是一件很麻烦的事情。
SELECT year as 年份
, sum (case when quarter = 'Q1' then amount else 0 end) 一季度
, sum (case when quarter = 'Q2' then amount else 0 end) 二季度
, sum (case when quarter = 'Q3' then amount else 0 end) 三季度
, sum (case when quarter = 'Q4' then amount else 0 end) 四季度
FROM SalesByQuarter GROUP BY year ORDER BY year DESC
(2)、使用PIVOT
由于SQL Server 2005有了新的PIVOT运算符,就不再需要CASE语句和GROUP BY语句了。(每个PIVOT查询都涉及某种类型的聚合,因此你可以忽略GROUP BY语句。)PIVOT运算符让我们能够利用CASE语句查询实现相同的功能,但是你可以用更少的代码就实现,而且看起来更漂亮。
select * from (SELECT year, QUARTER, AMOUNT FROM SalesByQuarter)
PIVOT (count (AMOUNT) FOR QUARTER IN ('Q1' as Q1, 'Q2' as Q2, 'Q3' as Q3, 'Q4' as Q4) ) GROUP BY YEAR;
oracle 数字类型行转列,oracle行转列相关推荐
- oracle对象类型_如何创建Oracle类型对象
oracle对象类型 Today we will learn how to create Oracle Type Object. If you are working on a large proje ...
- oracle 对象类型是什么意思,Oracle对象类型 (转)
Oracle对象类型也有属性和方法. 创建对象类型与创建表很相似,只是实际上不为存储的数据分配空间: 不带方法的简单对象类型: CREATE TYPE type_name as OBJECT ( co ...
- oracle数字类型ef映射,Entity Framework 学习中级篇5—使EF支持Oracle9i - ♂风车车.Net - 博客园...
从Code MSDN上下载下来的EFOracleProvider不支持Oracle9i.但是,目前我所使用的还是Oracle9i.为此,对EFOracleProvider修改了以下,以便使其支持Ora ...
- Oracle笔记----oracle数字类型number自增
创建序列 create sequence seq_student start with 6 increment by 1 maxvalue 500 nominvalue nocycle nocache ...
- oracle改类型吗,详解Oracle修改字段类型方法总结
最近学习了Oracle修改字段类型方法,留做记录. 有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter tab ...
- oracle数据库的浮点数,Oracle Float类型
本篇文章帮大家学习Oracle Float类型,包含了Oracle Float类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 本教程将向您介绍Oracle FLOAT ...
- oracle时间戳表达式,Oracle Timestamp类型
本篇文章帮大家学习Oracle Timestamp类型,包含了Oracle Timestamp类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本教程中将学习Orac ...
- oracle 创建nchar类型,Oracle NChar类型
本篇文章帮大家学习Oracle NChar类型,包含了Oracle NChar类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本教程中,您将了解Oracle NCH ...
- ACCESS常用数字类型的说明和取值范围
下面是ACCESS常用数字类型的说明和取值范围列表明供参考 数字类型 范围 Byte(字节) 介于 0 到 255 之间的整型数. Integer ...
最新文章
- ESPNet: 自动驾驶领域轻量级分割模型
- SpringBoot解决cors跨域问题
- Colored Boots
- 【wordpress基础教程一】:wordpress简介和安装
- linux系统编程之进程(七):system()函数使用【转】
- win10使用docker desktop安装k8s一直starting解决方法
- 怎么样成为编程技术大牛?
- 多个类共同继承一个父类
- jquery 弹出遮罩层
- 解读戴尔,惠普和思科的“三角关系”
- springboot格式化时间
- 解决octavia failed to run
- 怎么让模糊的数字变清楚_用ps怎么把模糊的字变清晰
- LVGL|lvgl v8教程(lvgl中文文档学习教程,开始更新lvgl v8.x文档教程,超详细)
- 粉丝文化:抖音广告短视频美妆营销中,男明星比女明星更带货?
- gbk英文占几个字节
- spin_lock_bh想到的一些事
- PyCharm设置中文(官方插件版)
- HTTP传输协议详解(传输过程及数据格式详细)
- MATLAB可以使用但是使用help函数报错问题的解决
热门文章
- ubuntu双系统导致进windows花屏
- Python的threadpool模块
- 针对Parse error: syntax error, unexpected T_PUBLIC in D:报错提醒
- C# 分割字符串方法
- [转载] AUML——Schedules and Events
- Bash shell脚本练习(一)
- c++代码转为go_Go语言学习笔记六--string编码
- java 免费cms_开源 免费 java CMS
- [转载] Python学习笔记——运维和Shell
- scala特性_Scala | 特性应用