#### SQL语句查询结果由行变为列
---------------------------------------SQL语句查询结果由行变为列-------------------------------
--用SQL语句,把表中的数据由行变为列.
--1.先建表.
create table SCORETABLE(ID int not null primary key,NAME varchar(50),SUBJECT varchar(50),SCORE int null);
--2.添加数据.
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(1, '张三', '语文', 70);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(2, '张三', '数学', 85);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(3, '张三', '外语', 75);
--3.用SQL实现.
select * from scoretable
--结果:
--ID 姓名 科目 分数
-- 1 张三 语文 65
-- 2 张三 数学 85
-- 3 张三 外语 75
select NAME as 姓名,
sum(case SUBJECT when '语文' then SCORE else 0 end) as 语文,
sum(case SUBJECT when '数学' then SCORE else 0 end) as 数学,
sum(case SUBJECT when '外语' then SCORE else 0 end) as 外语
from SCORETABLE
group by NAME
--结果:
--姓名 语文 数学 外语
--张三 65 85 75
- 目录
- 数据库表
- 13.7.5.6 SHOW COLUMNS Syntax
- Mysql生成列
- 表注释
- 默认字符集
- 索引
- 外键约束
- 数据类型
- NULL
- 查询语句
- IF
- CASE
- FIND_IN_SET
- 更新语句
- 复制更新
- 截取更新
- 插入语句
- 从一张表查询一个字段值插入另一个表中
- 统计函数
- COUNT
- 分组统计
- 日期时间字段按照日期分组
- GROUP_CONCAT
- 多字段关联
- LENGTH
- mb_strlen()
- SUM
- 按周,按月,按日分组统计数据
- 日期时间
- MySQL日期时间数据类型使用总结
- 计算日期差
- 插入当前日期时间
- 时间比较
- datetime
- 日期时间取时间段
- 统计
- 整型unix时间戳
- 计算两条相邻记录的时间差
- 日期时间-函数
- 常用函数
- CURDATE
- DATEDIFF
- DATE_ADD
- DATE_SUB
- EXTRACT
- NOW
- TO_DAYS
- UNIX_TIMESTAMP
- 作为时间比较
- FROM_UNIXTIME
- DATE_FORMAT
- TIMESTAMPDIFF
- 触发器
- 存储过程
- MySQL存储过程的基本函数
- 分页存储过程
- 存储过程教程
- 临时表
- 备份表
- CRM
- 客户关系表
- 通讯录
- SQL函数
- ISNULL
- IFNULL
- SUBSTR
- 模糊查询
- JSON
- Json函数
- Json数据类型
- 使用Json
- 使用navicat
- 虚拟列
- CRUD
- 索引设计
- 增加多字段索引
- 共享排他锁