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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis的安装以及使用

第一步&#xff0c;去官网下载一个压缩包到本地解压即用&#xff0c;绿色软件&#xff0c;不用其他操作&#xff0c;点击Download下载即可&#xff1a; Introduction to Redis | RedisLearn about the Redis open source projecthttps://redis.io/docs/about/第二步&#xff0…

oracle转sparksql工具化,不使用Sqoop流程,利用CacheManager直接完成SparkSQL数据流直接回写Oracle...

以前都是使用Sqoop来完成数据从生成的hdfs数据存储上来抽取至oracle的数据库&#xff1a;sqoop抽取语句&#xff1a;sqoop export --connect "jdbc:oracle:thin:ip:port:sid" --username 用户名 --password 密码 --table sid.表名 --export-dir hdfs://nameservice1/…

oracle+行换列,Oracle的数据表中行转列与列转行的操作实例讲解

行转列一张表查询结果为--行转列select years,(select amount from Tb_Amount as A where month1 and A.yearsTb_Amount.years)as m1,(select amount from Tb_Amount as A where month2 and A.yearsTb_Amount.years)as m2,(select amount from Tb_Amount as A where month3 and…

Oracle和sql语言,SQL语言的四种类型和ORACLE运算符

数据定义语言(DDL)数据操作语言(DML)数据控制语言(DCL)事务控制语言(TCL)Data Definition Language(DDL)DDL使我们有能力创建或删除表格。也可以定义索引(键)&#xff0c;规定表之间的链接&#xff0c;以及施加表间的约束。CREATE DATABASE - 创建新数据库ALTER DATABASE - 修改…

oracle的insert语句clob,.Net 操作 Oracle CLOB类型字段 INSERT 超长数据

如果仅仅在数据库中设置了类型为 CLOB 字段类型&#xff0c;使用普通的 INSERT 语句直接写入数据到数据库的话&#xff0c;它依然会将其视为 VARCHAR 类型数据&#xff0c;并最大长度为 4000 字符。超过该长度会报出字符串超长&#xff0c;写入数据失败的错误。使用 Dapper 处理…

php阅读器开发,微信小程序阅读器的简单实例开发

这篇文章主要介绍微信小程序阅读器的简单实例开发的相关资料,需要的朋友可以参考下今天和朋友聊天说到小程序&#xff0c;然后看在看书&#xff0c;然后我们就弄了个小读书的demo&#xff0c;然后现在分享一下。一、先来上图&#xff1a;首先先说下边的tabBar&#xff0c;项目采…

oracle存储返回sql查询,如何做才能使record类型和table类型存储查询语句返回的多条记录?...

CREATE OR REPLACE PROCEDURE Zxt_type_Study Is/*type 的使用*/Testrow1 Test%ROWTYPE;TYPE Aa IS TABLE OF Test%Rowtype;Testrow Aa : Aa();TYPE Bb IS TABLE OF Test.ac%Type;Cc Bb;Testrow2 Test%ROWTYPE;t Test.Ac%TYPE;BEGINTestrow2.Ac : a3;Testrow…

oracle10g检测未通过,win64bit安装oracle 10g版本检查未通过解决 提示要求的结果: 5.0,5.1,5.2,6.0 之一 实际结果: 6.1...

在WIN7上安装oracle 10g时&#xff0c;提示如下信息&#xff1a;正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一实际结果: 6.1检查完成。此次检查的总体结果为: 失败 <<<<问题: Oracle Database 10g 未在当前操作系统中经过认证。建议案: 确保在正确的平…

php对扑克牌进行排序,C#代码实现扑克牌排序的几种方式

扑克牌游戏&#xff0c;总是能用到很多的手牌排序&#xff0c;总结了几种方式供参考&#xff0c;顺便记录一下方便以后使用。我做的这个是由(1-13:黑桃A-K || 14 - 26:红桃 || 27 - 39&#xff1a;梅花 || 39 - 52 : 方片 || 53.54&#xff1a;小王.大王)表示的一副扑克牌&…

oracle10g导入dmp文件恢复,oracle 10g 恢复dmp文件。

1. 在winxp下&#xff0c;安装10g&#xff0c;默认选择&#xff0c;一路ok。(安装前自检出现dhcp警告&#xff0c;可直接忽略)2.命令行&#xff0c;在xp下&#xff0c;输入sqlplus&#xff0c;即可启动&#xff0c;登陆用 sqlplus / as sysdba 用管理员登陆3.在恢复oracle时&am…

js十秒没有点击怎么判断_MAC口红怎么判断真假?没批号就没有生产日期,网友:品控太差...

一般来说&#xff0c;MAC的口红产品&#xff0c;底部都会有三位编码&#xff0c;这是该款口红的批号。因像MAC这类国外美妆护肤品牌&#xff0c;是不会将生产日期明确的标注在产品上&#xff0c;都是将其编码成批号&#xff0c;在标注在外包装或者产品的侧面、底部等边缘位置。…

剪辑内核linux,Linux01-Linux编辑内核定制属于自己的内核49

一、编译内核相关命令1、重装initrd文件命令&#xff1a;mkinitrd&#xff1a;creates initial ramdisk p_w_picpaths forpreloading modules格式:mkinitrd initrd文件路径 内核版本号,如:mkinitrd/boot/initrd-uname -r.img uname -r2、I/O处理命令a、命令格式说明2${parame…

go run main.go 参数_介绍一款Go项目热编译工具gowatch

使用场景在golang项目编写过程中&#xff0c;需要对项目不断的进行构建go build并调试以快速发现问题&#xff0c;而我们每次进行手动的进行go build又太重复&#xff0c;所以写了这么一个工具gowatch来实时的监听文件的改动并编译运行&#xff0c;大大提升开发效率。快速入门安…

linux 服务端口查询,linux 怎么查看服务和端口

(1)查看本机关于IPTABLES的设置情况[roottp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destinationChain RH-Fi…

python 捕获鼠标点击事件,在Python中的wx.Frame外部捕获鼠标事件

In Python using wxPython, how can I set the transparency and size of a window based on the proximity of the mouse relative to the applications window, or frame?Eg. similar to a hyperbolic zoom, or The Dock in MAC OS X? I am trying to achieve this effect …

linux cordova安装教程,cordova搭建环境

cordova搭建环境一、配置java环境变量1.安装JDK 选择安装目录 安装过程中会出现两次 安装提示 。第一次是安装 jdk &#xff0c;第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下&#xff0c;jdk和jre安装在同一文件夹…

安卓rpg绅士游戏资源_海贼无双3(动作游戏)——电脑安卓单机游戏下载资源分享...

点击上方蓝字关注我们01游戏简介&#xff1a;游戏名称&#xff1a;海贼无双3其它名称&#xff1a;One Piece - Pirate Warriors 3游戏类型&#xff1a;动作游戏开发发行&#xff1a;Omega Force游戏平台&#xff1a;PC整理时间&#xff1a;2020-04-25官方网址&#xff1a;http:…

linux分区始柱号,找到了linux分区顺序错乱修复方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我之前安装ARCH时 因为自带的CFDISK工具太烂使用了主流的FDISK和PARTED 都远远不如DISKPART满意 功能弱不说最重要的就是莫名奇妙的错误超级多 错误提示还少甚至没有 让人郁闷到极限尤其是parted 因为没光驱 硬盘安装 之前又是WIND…

11210怎么等于24_想要消耗100大卡热量,怎么做才最简单?

减肥&#xff0c;最根本的原理就是制造热量差&#xff0c;从饮食上限制热量的摄入&#xff0c;调理体质让基础代谢更高&#xff0c;运动来进一步增加消耗&#xff0c;当热量差达到7000大卡左右的时候&#xff0c;就能瘦下来1kg的纯脂肪&#xff01;美食当前&#xff0c;自然要先…

连接linux工具Mtr,Linux常用网络工具:路由扫描之mtr

除了上一篇《Linux常用网络工具&#xff1a;路由扫描之traceroute》介绍的traceroute之外&#xff0c;一般Linux还内置了另一个常用的路由扫描工具mtr。mtr在某些方面比traceroute更好用&#xff0c;它可以实时显示经过的每一跳路由的信息&#xff0c;并不断进行探测。tracerou…