-
sql 列转行_SQL面试题:如何行列互换?一个万能模板
2020-12-01 00:19:13三个步骤:输出行列互换的结构表再用case...when...来输出数据用group by及max输出最终结果1。输出行列互换的结构表SELECT 学号,'课程编号0001','课程编号0002','课程编号0003' from score;2。再用case...when...来...三个步骤:
- 输出行列互换的结构表
- 再用case...when...来输出数据
- 用group by及max输出最终结果
1。输出行列互换的结构表
SELECT 学号,'课程编号0001','课程编号0002','课程编号0003' from score;
2。再用case...when...来输出数据
SELECT 学号, (case when 课程号='0001' then 成绩 else 0 end) as '课程号0001', (case when 课程号='0002' then 成绩 else 0 end) as '课程号0002', (case when 课程号='0003' then 成绩 else 0 end) as '课程号0003' from score;
3.用group by及max输出最终结果
SELECT 学号, max(case when 课程号='0001' then 成绩 else 0 end) as '课程号0001', max(case when 课程号='0002' then 成绩 else 0 end) as '课程号0002', max(case when 课程号='0003' then 成绩 else 0 end) as '课程号0003' from score group by 学号;
拓展,列转行
SELECT name,'english' as subject, english as score from a1 UNION ALL SELECT name,'maths' as subject,maths as score from a1 UNION ALL SELECT name,'music' as subject,music as score from a1;
参考:
行列互换问题,怎么办?送你一个万能模版
sql面试题:行列如何互换?
。
-
javascript中如何实现行列互换
2020-12-19 09:38:57javascript中如何实现行列互换 var rowAndColumn=function (obj){ //给它这样定义目的是能够顺序执行 var obj2={} var key1=Object.keys(obj) key1.sort() //对时间进行排序(如果坐标与时间无关,可以不用写这句... -
web 展现数据时如何实现行列互换
2020-06-23 14:34:451. 行列互换需求最常见的是在 BI 分析中,在 BI 中这个功能也叫旋转,可以直接通过拖拽字段方式实现行列互换效果,例如:http://c.raqsoft.com.cn/article/1535678317741#toc_h3_6 2. 如果没有 BI 工具,只有报表...1. 行列互换需求最常见的是在 BI 分析中,在 BI 中这个功能也叫旋转,可以直接通过拖拽字段方式实现行列互换效果,例如:
http://c.raqsoft.com.cn/article/1535678317741#toc_h3_62. 如果没有 BI 工具,只有报表工具的话,那么用报表也可以实现行列互换。
例如超链接实现方式:
http://c.raqsoft.com.cn/article/1575729781849#toc_h2_0
或者通过宏动态控制行列字段显示,从而实现行列互换:
http://c.raqsoft.com.cn/article/1575729781849#toc_h2_3
3. 如果既没有 BI 工具也没有报表工具,那么还可以通过 sql 实现。
部分数据库提供了行列互换函数,例如 oracle 数据库内置的 pivot、unpivot 函数,可以简化 sql 处理,但是不支持这种函数的数据库则需要写很复杂的 sql 语句实现,这时 sql 执行效率和 sql 维护工作量都是需要额外关心的点。
-
报表如何实现行列互换效果
2019-12-30 09:24:13如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢? 这里我介绍两种方法实现方法: 1. 两张报表超链接 2. 单张报表动态判断 两张报表超链接 实现...通常我们设计的二维的交叉报表,横向的维度和纵向的维度是固定的,而用户希望更希望能根据自己的需要快速转换横向纵向维度来查看报表。
如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢?
这里我介绍两种方法实现方法:
1. 两张报表超链接
2. 单张报表动态判断
两张报表超链接
实现思路:
二维的交叉报表行列维度有两种情况,我们只需对应两种情况做两张报表,切换的按钮用超链接实现,连接的目标就是另一张报表。
具体实现:
1. 新建一张报表,文件名为行列转换 1.rpx, 数据源使用润乾设计器下自带的 demo 数据源,数据集使用 SQL 检索方式,SQL 为:SELECT 订单. 货主地区, 订单. 订单金额, 雇员. 姓氏 + 雇员. 名字 as 雇员 FROM 订单, 雇员 WHERE 订单. 雇员 ID = 雇员. 雇员 ID 。
2. 设置报表单元格表达式,润乾设计器中单元格可以直接写表达式,也支持拖拽字段生成表达式。
B1 单元格我们通过拖拽字段的方式生成表达式:在设计器右下角的数据集面板中可以看到我们刚才新建的数据集和字段,选择对应字段,然后选择分组,将字段拖拽到 B1 单元格中,
B1 单元格就会出现 =ds1.group(货主地区; 货主地区);
A2 单元格同 B1 的操作,不同的是选择雇员字段拖拽,生成的表达式为 =ds1.group(雇员; 雇员:1);
B2 单元格选择订单金额,选择汇总,汇总方式为求和,拖拽字段到 B2 单元格中,表达式为 =ds1.sum(订单金额)。
3. 修改单元格扩展方式,单元格的扩展方向默认为纵向,选中 B1,在右侧属性面板中设置扩展方式为横向扩展。
4.A1 单元格中直接写上行列互换,设置超链接表达式:“./showReport.jsp?rpx=/30 交互报表 / 行列互换 2.rpx”,超链接窗口为:_self。
5. 将当前报表另存一张,保存文件名为“行列转换 2.rpx”,将 B1 和 A2 单元格表达式对调,将 A1 的超链接表达式修改为:“./showReport.jsp?rpx=/30 交互报表 / 行列互换 1.rpx”。
经过以上设置,我们就完成了最不烧脑的二维报表行列互换报表的制作,使用 showReport.jsp 访问行列转换 1.rpx,点击行列转换那几个字就会变成行列转换 2.rpx,用户尽管点击切换,不用做条件判断。
单张报表动态判断
实现思路:
根据标志 flag 当前值,来改变他的值,根据这个值确定横向分组和纵向分组使用的字段。
具体实现
1. 将行列转换 1.rpx 另存一个报表,文件名为行列转换.rpx。
2. 报表中增加一个普通参数,参数名称为 change, 数据类型为整数,默认的参数值为 1;
两个动态参数:参数名称 group1, 数据类型为字符串,值表达式为 if(change==1,“货主地区”,“雇员”;
参数名称 Group2, 数据类型为字符串,值表达式为 if(change==1,“雇员”,“货主地区”)。
3. 修改单元格表达式
横向分组和纵向分组的字段通过动态参数的值,动态变化,将 B1 的表达式修改为 =ds1.group(${group1};${group1}:1),将 A2 的表达式修改为 =ds1.group(${group2};${group2}:1)。
4. 修改行列互换的超链接表达式
超链接表达式为:“./showReport.jsp?rpx=/30 交互报表 / 行列互换.rpx&change=”+if(change==1,-1,1)
经过以上设置,我们通过 showReport.jsp 访问行列转换.rpx, 在浏览器地址栏中,输入 url:
http://localhost:6868/demo/reportJsp/showReport.jsp?rpx=/30 交互报表 / 行列转换.rpx访问。
当点击表头中的行列转换文字,刷新的报表还是当前的报表,但 change 的参数值已经变成了 -1,并且行列的分组字段也发生了变化。
通过上面介绍的两种方法都能快速的实现报表行列互换的效果,如果不想做多张报表来实现,推荐使用第二种实现方法,如果不习惯条件判断的设置,可以使用第一种方法,虽然涉及到两张报表,只是另存第一张报表,简单修改就行,修改的工作量可忽律不计,也没有第二种方法的小弯弯绕,具体根据自己的情况选择合适的方法吧。
附件中是两种方法实现的报表实例,方便对照文章实现行列互换的需求。
-
报表如何实现行列互换效果?
2020-03-16 17:56:57如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢? 这里我介绍两种方法实现方法: 1. 两张报表超链接 2. 单张报表动态判断 两张报表超链接 实现... -
sortable 拖拽时互换目标的位置_报表如何实现行列互换效果?
2020-12-06 09:45:32如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢?这里我介绍两种方法实现方法:1. 两张报表超链接2. 单张报表动态判断两张报表超链接实现思路:二维的... -
vb.net 如何实现报表打印_报表如何实现行列互换效果?
2020-12-10 16:53:03如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢?这里我介绍两种方法实现方法:1. 两张报表超链接2. 单张报表动态判断两张报表超链接实现思路:二维的... -
mysql 怎么行列互换_MySQL开发技巧之如何进行行列转换
2021-01-19 20:01:35现在以 学生表student、科目表course 、成绩表 score 来说明如何进行列转行以及行转列CREATE TABLE student(stu_uid INT UNSIGNED auto_increment NOT NULL PRIMARY KEY,stu_name varchar(10) NOT NULL);CREATE ... -
vb.net 如何实现报表打印_报表如何实现行列互换效果?(转)
2020-12-10 16:53:04如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢?这里我介绍两种方法实现方法:1. 两张报表超链接2. 单张报表动态判断两张报表超链接实现思路:二维的... -
如何在excel中实现数据的转置(行列互换)
2013-07-11 10:02:54在使用Excel 时,当你编辑一张表格后,发现该表格列数太多,而行数较少,这时你或许希望该表格的行列互换,来方便打印;或许是为了表格更为清晰,需要行列数据互换的;我们称为转置; excel2003中: 1、首先选中... -
sql中行列互换
2016-04-10 19:02:27基本思路:行转列用case when,再加上...针对不同的数据库,也会有现成的函数使用,下面是hql中行列例子: 转自: http://my.oschina.net/repine/blog/295961?fromerr=1jSKR61a 一、行转列 1、问题 hive如何将 a b 1 a -
中报表 姓氏分组_报表如何实现行列互换效果?---报表工具像BI一样旋转
2021-01-13 02:33:03如上图所示,我们通过点击一个按钮或文字,就可将报表的行列维度互相转换,这样的动态转换效果要怎么设置实现呢?这里我介绍两种方法实现方法:1. 两张报表超链接2. 单张报表动态判断两张报表超链接实现思路:二维的... -
mysql 列交换_mysql 行列互换
2021-01-18 19:04:08本文,主要结合业务中的需求点,来说明如何使用mysql实现表格的行列互换:【行转列】假设你有这样一个表,记录了每个销售部门,每一天的销售金额表1,每日各部门销售金额明细表use analysis;CREATE TABLE `tmp_... -
sql面试题:行列如何互换?
2019-07-30 11:30:36这样我们就得到了目标表(行列互换) 如果对case表达式还不了解的,可以看下我讲过的《从零学会SQL》的“多表查询”。 推荐: 如何用最短的时间找到初级数据分析师工作? -
excel 行列互换 绿色工具(怎么把行变成列,把列变成行)
2019-06-17 00:06:33excel如何方便的进行行列互换,采用下面的介绍一键即可完成 一个好用的excel行列互换绿色工具, 地址:http://www.excelfb.com/ 点击 : 将表换成另外一种表格式 --》行列互换绿色工具。 下图中第四个就是工具的... -
oracle行列互换几种类型实现浅析
2018-12-24 15:09:57oracle行列互换几种类型实现浅析一、行转列(组函数和decode实现)二、列转行(union all实现)三、多行转化成字符串(组函数、decode和分析函数实现)四、字符串转换成多列(字符串拆分regexp_substr)五、字符串... -
sql 最大值_sql面试题:行列如何互换?
2020-12-09 09:59:30【面试题】下面是学生的成绩表(表名score,列名... 这样我们就得到了目标表(行列互换) 如果对case表达式还不了解的,可以看下我讲过的《从零学会SQL》的“多表查询”。 推荐:如何用最短的时间找到初级数据分析师工作?