【SQL 学习】行列转换

SQL> conn system/yang as sysdba
已连接。
SQL> conn yang/yang
已连接。
SQL> create table change (name varchar(10),subject varchar2(20),grade int);
表已创建。
SQL> set timing on
SQL> insert into change values ('Jim','语文',100);
已创建 1 行。
已用时间:  00: 00: 00.00
SQL> insert into change values ('Jim','数学',90);
已创建 1 行。
已用时间:  00: 00: 00.03
SQL> insert into change values ('Jim','英语',99);
已创建 1 行。
已用时间:  00: 00: 00.00
SQL> insert into change values ('Lily','语文',80);
已创建 1 行。
已用时间:  00: 00: 00.01
SQL> insert into change values ('Lily','数学',90);
已创建 1 行。
已用时间:  00: 00: 00.00
SQL> insert into change values ('Lily','英语',94);
已创建 1 行。
已用时间:  00: 00: 00.01
SQL> commit;
提交完成。
已用时间:  00: 00: 00.03
SQL> select * from change;

NAME       SUBJECT                   GRADE                                     
---------- -------------------- ----------                                     
Jim        语文                        100                                     
Jim        数学                         90                                     
Jim        英语                         99                                     
Lily         语文                         80                                     
Lily         数学                         90                                     
Lily         英语                         94                                     
已选择6行。

SQL> select name as "姓名" ,
  2  sum(decode(subject,'语文',grade,NULL)) "语文",
  3  sum(decode(subject,'数学',grade,NULL)) "数学",
  4  sum(decode(subject,'英语',grade,NULL)) "英语"
  5  from change
  6  group by name;
姓名             语文       数学       英语                                    
---------- ---------- ---------- ----------                                    
Lily               80         90         94                                    
Jim            100         90         99                                    
已用时间:  00: 00: 00.01

时间: 2024-09-19 20:40:11

【SQL 学习】行列转换的相关文章

Sql实现行列转换方便了我们存储数据和呈现数据_mssql2005

从MS Sql Server 2005微软就推出了pivot和unpivot实现行列转换,这极大的方便了我们存储数据和呈现数据.今天就对这两个关键字进行分析,结合实例讲解如何存储数据,如何呈现数据. 例如学生选课和成绩系统中就有一张表,该表存储了学生的课程成绩,我们无法去预料课程的多少,因此一般表会设计为下面这样: 图1  最后一列是课程编号,这样无论开学之后还会不会增加课程供学生选择,都没有关系.那么我们要呈现给用户看的报表一般是这样的: 图2  可以看到存储数据的时候采用的是列式存储,最终呈

浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用_Mysql

/*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores]     (       [ID] INT IDENTITY(1, 1)                PRIMARY KEY ,       [Student] VARCHAR(20) ,       [Subject] VARCHAR(30) ,       [Score] FLOAT     ) go TRUNCATE TABLE Sc

sql 普通行列转换_MsSql

问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 74 84 94 张三 74 83 93 ------------------- */ create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int) insert into tb va

sql 普通行列转换

问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 74 84 94 张三 74 83 93 ------------------- */ create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int) insert into tb va

【转】SQL行列转换

原文地址:http://blog.csdn.net/kiki113/article/details/4105929   行列转换等经典SQL语句 1.--行列转换 原表:   姓名     科目   成绩            张三     语文    80            张三     数学    90            张三     物理    85            李四     语文    85            李四     物理    82            李

行列转换

转换 1. 行列转换--普通 假设有张学生成绩表(CJ)如下 [姓名]  [学科]  [成绩]张三    语文    80 张三    数学    90 张三    物理    85 李四    语文    85 李四    数学    92 李四    物理    82王五    数学    60 想变成     [姓名] [语文] [数学] [物理]张三   80     90     85 李四   85     92     82王五   null   60     null decla

SQL语句行列转换方法有哪些

SQL语句行列转换的两种方法 case...when和pivot函数应用,运用pivot 函数只支持数据库版本2005以上的.一般运用case when else end 的方法比较多,比较普遍 /*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] ( [ID] INT IDENTITY(1, 1) PRIMARY KEY , [Student] VARCHAR(20) , [Subject]

每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

原文 http://www.cnblogs.com/Olive116/p/3271706.html 2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL查询统计来讲解一下实际开发中比较常用的行列转换/小计/统计等报表统计相关的常用知识点. 题目如下:  查询sales 和stores表,得出1993年每个store每季度销售数量及小计和总计,查询出的

行列转换-sql 检索结果拼接成字符串。。

问题描述 sql 检索结果拼接成字符串.. 因项目中业务要求所致,写SQL的时候对检索结果的最后两列进行了行列转换.如下pivot (sum(sl) for community_code in ('0201' 社区1 '0202' 社区2'0203' 社区3))因为社区的个数不确定,就导致了输出的结果集中列的个数也不确定.所以用实体类进行接收结果集的时候就遇到了麻烦.对应上述问题,决定将结果集的每一行拼接成一个字符串.那么问题就来了,输出的数据和社区名称对应不起来了..不知道有没有什么好的方法解

[数据库] SQL查询语句表行列转换及一行数据转换成两列

本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法.子查询的应用.decode函数的用法.希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同性质的学生总数 3.一行数据转换成两列数据 union all 4.表行列数据转换(表转置) 1.创建数据库表及插入数据 创建数据库.创建学生表并设置主键.插入数据代码如下: --创建数据库 create database StudentMS --使用数据库 use StudentMS --创建学生