mysql表行列互换
来源:互联网 发布:网络延时和rtt的关系 编辑:程序博客网 时间:2024/06/05 11:28
1. 问题描述
查询下面数据库表数据namecoursescore张三语文88张三数学92张三物理93李四语文79李四数学99李四物理94查询结果如下:name语文数学物理张三889293李四799994
2. 解决方法
测试数据:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- ----------------------------
-- Table structure for `score`
-- ----------------------------
DROP
TABLE
IF EXISTS `score`;
CREATE
TABLE
`score` (
`
name
`
varchar
(10)
DEFAULT
NULL
,
`course`
varchar
(10)
DEFAULT
NULL
,
`score`
int
(11)
DEFAULT
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
-- ----------------------------
-- Records of score
-- ----------------------------
INSERT
INTO
`score`
VALUES
(
'张三'
,
'语文'
,
'88'
);
INSERT
INTO
`score`
VALUES
(
'张三'
,
'数学'
,
'92'
);
INSERT
INTO
`score`
VALUES
(
'张三'
,
'物理'
,
'93'
);
INSERT
INTO
`score`
VALUES
(
'李四'
,
'语文'
,
'79'
);
INSERT
INTO
`score`
VALUES
(
'李四'
,
'数学'
,
'99'
);
INSERT
INTO
`score`
VALUES
(
'李四'
,
'物理'
,
'94'
);
1. 使用IF()函数
1
2
3
4
5
SELECT
name
,
SUM
(IF(course =
'语文'
,score,0))
as
"语文"
,
SUM
(IF(course =
'数学'
,score,0))
as
"数学"
,
SUM
(IF(course =
'物理'
,score,0))
as
"物理"
FROM
score
GROUP
BY
name
;
2. 使用CASE WHEN
1
2
3
4
5
SELECT
name
,
SUM
(
CASE
WHEN
course =
'语文'
THEN
score
ELSE
0
END
)
as
"语文"
,
SUM
(
CASE
WHEN
course =
'数学'
THEN
score
ELSE
0
END
)
as
"数学"
,
SUM
(
CASE
WHEN
course =
'物理'
THEN
score
ELSE
0
END
)
as
"物理"
FROM
score
GROUP
BY
name
;
阅读全文
0 0
- mysql表行列互换
- mysql表行列互换
- mysql行列互换
- mysql 行列互换2
- mysql 行列互换,列列互换数据,数组列转多行数据
- 行列互换
- 行列互换
- 行列互换
- 行列互换
- 行列互换
- 行列互换
- ACCESS交叉表(行列互换)
- 利用dataset行列互换
- sql行列互换问题
- 经典的行列互换
- SQL2000 行列互换
- SQL 行列互换
- [SQLServer]数据库行列互换
- 设计模式_中介者模式(25)
- 2017模拟赛 密室(多维最短路)
- base.css
- 6.1
- I/O复用--select函数源码剖析
- mysql表行列互换
- 我就是想发一下我的小站 哈哈哈
- 重磅来袭
- 动态规划问题数字三角形的(递归程序)
- Android开发-数据存储方式一
- HAProxy常用配置介绍,ACL详解
- css知识点
- codeforces C. Solution for Cube
- mysql游标循环的使用