mysql 多行变一行 若行与列转换
2008-10-16 09:42
337 查看
DateClass Class Count
2004-02 AU 32
2004-02 VAIO 56
2004-02 PB 77
2004-02 TV 89
2004-03 AU 38
2004-03 VAIO 99
2004-03 PB 32
2004-03 TV 87
要将查询结果变为
DateClass AU VAIO PB TV
2004-02 32 56 77 89
2004-03 38 99 32 87
建表:
CREATE TABLE `test` (
`dataClass` varchar(25) DEFAULT NULL,
`class` varchar(25) DEFAULT NULL,
`count` varchar(25) DEFAULT NULL
);
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `test` VALUES ('2004-02', 'AU', '32');
INSERT INTO `test` VALUES ('2004-02', 'VAIO', '56');
INSERT INTO `test` VALUES ('2004-03', 'AU', '38');
INSERT INTO `test` VALUES ('2004-03', 'PB', '55');
SQL实现:
select DataClass ,
max(case when class = 'AU' then Count else 0 end) as AU,
max(case when class = 'VAIO' then Count else 0 end) as VAIO,
max(case when class = 'PB' then Count else 0 end) as PB,
max(case when class = 'TV' then Count else 0 end) as TV
from test
group by DataClass;
结果:
+-----------+----+------+----+----+
| DataClass | AU | VAIO | PB | TV |
+-----------+----+------+----+----+
| 2004-02 | 32 | 56 | 0 | 0 |
| 2004-03 | 38 | 0 | 55 | 0 |
+-----------+----+------+----+----+
2 rows in set
2004-02 AU 32
2004-02 VAIO 56
2004-02 PB 77
2004-02 TV 89
2004-03 AU 38
2004-03 VAIO 99
2004-03 PB 32
2004-03 TV 87
要将查询结果变为
DateClass AU VAIO PB TV
2004-02 32 56 77 89
2004-03 38 99 32 87
建表:
CREATE TABLE `test` (
`dataClass` varchar(25) DEFAULT NULL,
`class` varchar(25) DEFAULT NULL,
`count` varchar(25) DEFAULT NULL
);
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `test` VALUES ('2004-02', 'AU', '32');
INSERT INTO `test` VALUES ('2004-02', 'VAIO', '56');
INSERT INTO `test` VALUES ('2004-03', 'AU', '38');
INSERT INTO `test` VALUES ('2004-03', 'PB', '55');
SQL实现:
select DataClass ,
max(case when class = 'AU' then Count else 0 end) as AU,
max(case when class = 'VAIO' then Count else 0 end) as VAIO,
max(case when class = 'PB' then Count else 0 end) as PB,
max(case when class = 'TV' then Count else 0 end) as TV
from test
group by DataClass;
结果:
+-----------+----+------+----+----+
| DataClass | AU | VAIO | PB | TV |
+-----------+----+------+----+----+
| 2004-02 | 32 | 56 | 0 | 0 |
| 2004-03 | 38 | 0 | 55 | 0 |
+-----------+----+------+----+----+
2 rows in set
相关文章推荐
- mysql 将多行转换一行
- Oracle 实现多行转换成一行 使用oracle 10g collect函数
- mysql 合并多行数据到一行
- mysql利用group_concat()合并多行数据到一行
- linux shell 将多行文件转换为一行
- SQL查询案例:多行转换为一行
- sql 多行转换为一行
- oracle 多行,一行转换(10g以上)
- mysql 多行数据合并成一行
- mysql如何将多行数据合并成一行
- mysql多行数据合并为一行
- linux shell 将多行文件转换为一行
- SQL查询案例:多行转换为一行
- mysql利用group_concat()合并多行数据到一行
- 同一列的多行字符串数据用SQL怎么转换成同一列的一行数据
- mysql实现多行查询结果合并成一行
- sql 多行转换为一行(STUFF及PIVOT的用法) ||SQL 合并列值和拆分列值
- Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开
- mysql多行变一行
- mysql如何实现多行查询结果合并成一行