SQL 实现行列互换

Oracle:不过大多数是采用 oracle 数据库当中的一些便捷函数进行处理,比如 ”pivot”;

MySql:目前没有找到更好的方法

题目:数据库中有一张如下所示的表,表名为sales。

季度 销售量
1991 1 11
1991 2 12
1991 3 13
1991 4 14
1992 1 21
1992 2 22
1992 3 23
1992 4 24

要求:写一个SQL语句查询出如下所示的结果。

一季度 二季度 三季度 四季度
1991 11 12 13 14
1992 21 22 23 24

我给出的答案是这样的:

1 select 年,
2 sum(case when 季度=1 then 销售量 else 0 end) as 一季度,
3 sum(case when 季度=2 then 销售量 else 0 end) as 二季度,
4 sum(case when 季度=3 then 销售量 else 0 end) as 三季度,
5 sum(case when 季度=4 then 销售量 else 0 end) as 四季度
6 from sales group by 年;
时间: 2024-11-07 04:39:57

SQL 实现行列互换的相关文章

行列互换

---psydbnew (PSYP_Trends_GetTestStressorAvgPoint)SELECT QuestionNum,     sum(case when BatchClassName='第一批' then AvgPoint else 0 end )as '第一批',     sum(case when BatchClassName='第二批' then AvgPoint else 0 end )as '第二批',     sum(case when BatchClassNam

报表如何实现行列互换效果?

通常我们设计的二维的交叉报表,横向的维度和纵向的维度是固定的,而用户希望更希望能根据自己的需要快速转换横向纵向维度来查看报表. 如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢? 这里我介绍两种方法实现方法: 1. 两张报表超链接 2. 单张报表动态判断 两张报表超链接 实现思路: 二维的交叉报表行列维度有两种情况,我们只需对应两种情况做两张报表,切换的按钮用超链接实现,连接的目标就是另一张报表. 具体实现: 1. 新建一张报表,文件名为行

sql server行列转化和行列置换

行列转换: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 74   84   94 张三 74   83   93 create table sc(姓名 varchar(10),课程 varchar(10),分数 float) insert into sc select '张三','语文',74 union select 

将二维数组中的行列互换

情景:二维数组可以存储表格数据,还可以根据下标索引加入各种运算,而且图片的关键运算方法也是以二维数组为基础进行矩阵运算的. //创建二维数组 int arr[][] = new int[][]{{1,2,3},{4,5,6},{7,8,9}}; System.out.println("行列互掉前:"); //输出二维数组 printArray(arr); int arr2[][] = new int[arr.length][arr.length]; //调整数组行列数据 for (in

java 二维数组行列互换

代码需求: 对等行等列的二维数组进行 行列 的互换 分析过程 主对角线是保持不变 行列互换即角标互换:[0][1] => [1][0] 循环次数:外层循环行,内层循环每一行的列 示意图 代码实现 public class ArrayReverse { public static void main(String[] args) { int arry[][] = new int[][] {{1,2,3},{4,5,6},{7,8,9}}; reverse(arry); printArray(arr

sql行列互换

出现这个结果: sql如下: 1 SELECT y ,sum(case jidu when 1 then sales else 0 end) as yijidu,sum(case jidu when 2 then sales else 0 end) as erjidu from a GROUP BY y;

SQL面试题-行列互换-if、【case when】

http://www.cda.cn/view/21469.html tb_lemon_grade中,表中字段id,student_name,course,score分别表示成绩id,学生姓名,课程名称,课程成绩,表中数据表1所示.请写出一条SQL,将表1的数据变成表2的形式id    学生姓名    课程名称    课程成绩1    张三     Linux       852    张三         MySQL       923    张三         Java       874 

一道SQL面试题(行列互换)

有一个SQL题在面试中出现的概率极高,最近有学生出去面试仍然会遇到这样的题目,在这里跟大家分享一下. 题目:数据库中有一张如下所示的表,表名为sales. 年 季度 销售量 1991 1 11 1991 2 12 1991 3 13 1991 4 14 1992 1 21 1992 2 22 1992 3 23 1992 4 24 要求:写一个SQL语句查询出如下所示的结果. 年 一季度 二季度 三季度 四季度 1991 11 12 13 14 1992 21 22 23 24 我给出的答案是这

SQL行列互换很方便

---行转列--pivotcreate table tempTable( id int primary key identity(1,1), Student nvarchar(36), [Subject] nvarchar(36), Score int,) select * from tempTableinsert into tempTable values ('张三','语文','90')insert into tempTable values ('张三','语文','89')insert i