在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能

一、MSsqlserver中我们通常的用法

  1. 1Sqlserver数据库测试
  2. ---创建测试表
  3. Create table s(
  4.  
  5. [name] nvarchar(50),
  6. book nvarchar(50),
  7. saledNumber int
  8. )
  9. ----插入测试数据
  10. insert into s ([name],book,saledNumber) values('小王','java从入门到精通',10);
  11. insert into s ([name],book,saledNumber)values('小李','java从入门到精通',15);
  12. insert into s ([name],book,saledNumber)values('小王','C#高级编程',8);
  13. insert into s ([name],book,saledNumber)values('小李','java从入门到精通',7);
  14. insert into s ([name],book,saledNumber)values('小王','java从入门到精通',9);
  15. insert into s ([name],book,saledNumber)values('小李','java从入门到精通',2);
  16. insert into s ([name],book,saledNumber)values('小王','C#高级编程',3);
  17. insert into s ([name],book,saledNumber)values('小李','java从入门到精通',5);
  18. insert into s ([name],book,saledNumber)values('小李','C#高级编程',5);
  19.  
  20. ---1、通过case when 方式
  21. SELECT [name], sum(case book when 'java从入门到精通' then saledNumber else 0 end) as [java从入门到精通],sum(case book when 'C#高级编程' then saledNumber else 0 end) as [C#高级编程], sum(saledNumber) as [sum] from s group by [name]
  22.  
  23. ---2、通过pivot
  24. select sa.name,sa.java从入门到精通,sa.C#高级编程 ,sa.java从入门到精通+sa.C#高级编程 as 合计 from s
  25. pivot(sum(saledNumber) for book in (java从入门到精通,C#高级编程)) sa

  

二、oracle 的用法

  1. ---创建测试表
  2. Create table s(
  3.  
  4. name varchar(50),
  5. book varchar(50),
  6. saledNumber number(9)
  7. )
  8. ----插入测试数据
  9. insert into s (name,book,saledNumber) values('小王','java从入门到精通',10);
  10. insert into s (name,book,saledNumber)values('小李','java从入门到精通',15);
  11. insert into s (name,book,saledNumber)values('小王','C#高级编程',8);
  12. insert into s (name,book,saledNumber)values('小李','java从入门到精通',7);
  13. insert into s (name,book,saledNumber)values('小王','java从入门到精通',9);
  14. insert into s (name,book,saledNumber)values('小李','java从入门到精通',2);
  15. insert into s (name,book,saledNumber)values('小王','C#高级编程',3);
  16. insert into s (name,book,saledNumber)values('小李','java从入门到精通',5);
  17. insert into s (name,book,saledNumber)values('小李','C#高级编程',5);
  18. ----
  19.  
  20. ---1、通过case when 方式
  21. SELECT name, sum(case book when 'java从入门到精通' then saledNumber else 0 end) as java从入门到精通 ,sum(case book when 'C#高级编程' then saledNumber else 0 end) as C#高级编程, sum(saledNumber) as sum from s group by name;
  22.  
  23. ---2、通过pivot
  24. select * from (select name,saledNumber,book from s group by name, saledNumber, book )
  25.  
  26. pivot(sum(saledNumber) for book in ('java从入门到精通','C#高级编程')) ;

  

描述不清或者有错误的地方,希望大家指正修改,对于oracle中更多关于Pivot 和 Unpivot

使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。请参考oracle官方实例

http://www.oracle.com/technetwork/cn/articles/11g-pivot-101924-zhs.html

  1.  

通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)的更多相关文章

  1. sql行列转换PIVOT与unPIVOT

    基本语法 select * from Mould pivot ( count(ID)for ProductTypeCode in ( [FC], [RCU], [RCD] )) as PVT; wit ...

  2. SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)

    SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...

  3. excel2013做数据透视表

    excel2013做数据透视表     Excel最新版更新到2013,相比2003.2007和2010,2013的excel界面方面有一定变化,在操作方面也有一定的便捷性.那么如何使用excel20 ...

  4. SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...

  5. jsp+servlet上传excel并将数据导入到数据库表的实现方法

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. SQL查询数据并插入新表

    SQL查询数据并插入新表 --如果接受数据导入的表已经存在 insert into 表 select * from tablename --如果导入数据并生成表 select * into 表 fro ...

  7. SQL Server中行列转换 Pivot UnPivot

    SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...

  8. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  9. 插入1000万条数据到mysql数据库表

    转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...

随机推荐

  1. hdu 2715 Herd Sums

    Herd Sums Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. 【Stage3D学习笔记续】真正的3D世界(四):空间大战雏形

    前面几个星期抽空用Starling做了一个打飞机的小游戏(所以没有接着看书了),准备面试时用的,结果面试还是没过%>_<%...这个游戏打算过几天全部开源了 那么接下来打算这周把<S ...

  3. Ant-关键元素(笔记一)

    需求:使用ant脚本在控制台输出一句话 <?xml version="1.0" encoding="utf-8"?> <project nam ...

  4. ORA-12154 TNS无法解析指定的连接标识符

    又是这个百无聊赖的问题,尽管问题芝麻点大,却让我们好找啊! 非常久没有安装oracle了.今天安装11g的时候,用PLSQL Developer连接时,就出现了这个俗不可耐的问题:ORA-12154 ...

  5. Nape的回调系统 nape.callbacks

    在Nape中增加一个回调大致分为三步 1:定义一些标签,并根据需求为不同的Interactor打上不同的标签 2:定义一个监听器,这个监听器定义了哪些标签触发了哪种行为之后做何种回调 3:为Space ...

  6. SQLSERVER中返回修改后的数据

    在公司看到同事写了个SQL2005的新特性的文章,觉得很实用,在这里和大家分享下. 这种技术主要是用到了inserted和deleted虚拟表,这两张表相信大家都很熟悉.以前我们主要是在触发器中使用. ...

  7. Mysql 培训

     1. Mysql 培训 1.1. 培训目的 本文档是针对MySQL 数据库方面的基础培训,为了使项目组成员能够达到使用MySQL 数据库的目的. 1.2. 培训对象 开发者 1.3. 经常使用词及符 ...

  8. android128 zhihuibeijing 科大讯飞 语音识别

    - 科大讯飞 开放平台 http://open.voicecloud.cn/ package com.itheima.voicedemo; import android.app.Activity; i ...

  9. android127 zhihuibeijing 屏幕适配

    ## 屏幕适配 ## 加载不同分辨率的图片是根据手机的像素来加载不同分辨率文件夹下的图片. > 先在主流屏幕来发: *(分辨率和手机屏幕大小无关), 遵循原则: 不用AbsoluteLayout ...

  10. Python built-in函数的源码实现定位

    http://blog.nsfocus.net/locate-python-built-in-function/