一 列转行

CREATE TABLE test1(ID INT PRIMARY KEY     NOT NULL,NAME           VARCHAR(50)    NOT NULL,语文 INT,数学 INT,英语 INT
);insert into test1 values (1,'张飞',80,90,100);
insert into test1 values (2,'赵飞燕',100,90,80);SELECTNAME,'语文' AS subject ,MAX("语文") AS score
FROM test1 GROUP BY NAME
UNION
SELECTNAME,'数学' AS subject ,MAX("数学") AS score
FROM test1 GROUP BY NAME
UNION
SELECTNAME,'英语' AS subject ,MAX("英语") AS score
FROM test1 GROUP BY NAME

使用如上SQL就对了;下面是网上的,

select *
from (select sname,[Course ] ='数学',[Score]=[数学] from Tb_students union all
select sname,[Course]='英语',[Score]=[英语] from Tb_students union all
select sname,[Course]='语文',[Score]=[语文] from Tb_students)t
order by sname,case [Course] when '语文' then 1 when '数学' then 2 when '英语' then 3 end

有些问题;

参阅

https://www.cnblogs.com/injet/p/10885478.html

二 行转列

CREATE TABLE test2(NAME           VARCHAR(50)    NOT NULL,subject varchar(50),score int
);insert into test2 values ('小明','语文',96);
insert into test2 values ('小明','数学',98);
insert into test2 values ('小明','英语',95);
insert into test2 values ('大花','语文',92);
insert into test2 values ('大花','数学',96);
insert into test2 values ('大花','英语',98);SELECT name,MAX(CASEWHEN subject='语文'THEN scoreELSE 0END) AS "语文",MAX(CASEWHEN subject='数学'THEN scoreELSE 0END) AS "数学",MAX(CASEWHEN subject='英语'THEN scoreELSE 0END) AS "英语"
FROM test2
GROUP BY name

使用SQLITE;

三 PIVOT

如果是SQL Server 则可使用PIVOT 和 UNPIVOT;

PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。
PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。

语法形式:     
SELECT 
<非透视的列>, [第一个透视的列] AS <列名称>,[第二个透视的列] AS <列名称>,...[最后一个透视的列] AS <列名称>,
FROM
(<生成数据的 SELECT 查询>) AS <源查询的别名>
PIVOT
(
<聚合函数>(<要聚合的列>)
FOR
[<包含要成为列标题的值的列>]
IN ( [第一个透视的列], [第二个透视的列],... [最后一个透视的列])
) AS <透视表的别名>
<可选的 ORDER BY 子句>

SELECT *
FROM student
PIVOT (
    SUM(score) FOR subject IN (语文, 数学, 英语)
)

SELECT *
FROM student1
UNPIVOT (
    score FOR subject IN ("语文","数学","英语")
)

SQL 列转行、行转列 - 使用sqlite演示相关推荐

  1. 张同学的 SQL中对材料报价单的数据权限进行操作 (如列转行 行转列的处理) 学习一下....

    SQL中对材料报价单的数据权限进行操作 (如列转行 行转列的处理) --可以直接放到查询分析器执行 --判断测试表TmpTCIQuote是否有存在 不存在则创建 if NOT exists (sele ...

  2. Hive SQL中的concat、concat_ws、concat_group列转行,行转列

    目录 1.concat函数,concat_ws函数,concat_group函数 CONCAT() 函数 2.CONCAT_WS(SEPARATOR ,collect_set(column)) 等价于 ...

  3. SQL 横转竖 、竖专横(转载) 列转行 行转列 表旋转

    普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果 ...

  4. SQL中的行转列和列转行

    导读 SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能.而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可 ...

  5. Sql 语句收集——行转列

    SQL行转列汇总PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (- ...

  6. excel根据条件列转行_“Excel怎样将列转为行 Excel列转行方法“excel有条件转置

    EXCEL中如何将大量竖列数据一次性转为横行.如图. 很简单就可实现,用QQ说吧..87017761打字很麻烦.. Excel怎样将列转为行 Excel列转行方法 目标:将一列数转数据,比如将A列数据 ...

  7. mysql 交叉表行转列_Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现 SQL Code selectconcat(id,username)strfromapp_user selectid||usernames ...

  8. sql查询:行转列和 列转行

    目录 一.行转列 1.使用case-when-then 2.使用SUM(IF()) 生成列 3.使用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行 4.使用SUM(IF()) 生成 ...

  9. SQL SERVER PIVOT 行转列、列传行

    在数据库操作中,有些时候我们遇到需要实现"行转列"的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIM ...

  10. DLA SQL技巧:行、列转换和JSON数据列展开

    1. 简介 在数据库SQL处理中,常常有行转列(Pivot)和列转行(Unpivot)的数据处理需求.本文以示例说明在Data Lake Analytics中,如何使用SQL的一些技巧,达到行转列(P ...

最新文章

  1. Oracle:关于分布式数据库(创建数据库链路,创建触发器)
  2. JavaScript 运行机制详解(理解同步、异步和事件循环)
  3. java 线程状态_【19期】为什么Java线程没有Running状态?
  4. 微信改号?我用 Python 发现了六大隐藏秘密......
  5. 线程安全的CopyOnWriteArrayList介绍
  6. 基于Cocos2d-x开发guardCarrot--6 《保卫萝卜2》解锁天天向上玩法
  7. Fiddler中文乱码解决方法
  8. Citavi系列之Word参考文献APA转LaTeX Bib文件
  9. 简述osi参考模型各层主要功能_简述OSI参考模型定义及各层的主要功能
  10. Java Swing 课程设计 ---- 实验室设备管理系统
  11. 移动硬盘不在计算机显示,移动硬盘在电脑上不显示怎么办
  12. 什么是等保(信息安全等级保护)?
  13. 51nod 1128 正整数分组 V2(二分数组)
  14. 计算机桌面计划,电脑桌面日程安排软件
  15. mysql 存储树形结构
  16. 基于python的火车票售票系统/基于django火车票务网站/火车购票系统
  17. SSJ项目给我的感悟
  18. 根据accept-language 设置国际化
  19. 腾讯企业邮信任此计算机,讲述qq企业邮箱启用微信动态密码的方法
  20. 高分一号(GF-1)卫星影像数据介绍

热门文章

  1. C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级
  2. 软件设计原则——里氏代换原则
  3. 组件间数据交互——父组件向子组件传值( props属性值类型) 子组件向父组件传值-携带参数 || 非父子组件间传值
  4. c++中的变量作用范围
  5. 用JAVASCRIPT实现静态对象、静态方法和静态属性
  6. 个人比较喜欢的JS网页跳转传值
  7. Python 技术篇 - 使用pypandoc库实现html文档转word文档实例演示
  8. Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示
  9. 写CSDN插入图片一直无法显示?
  10. OpenCV2: Mat属性type,depth,step