sql 统计问题 求教啊
CREATE TABLE `stuscore` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
`subject` varchar(20) default NULL,
`score` varchar(20) default NULL,
`stuid` varchar(10) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `stuscore` */
insert into `stuscore`(`id`,`name`,`subject`,`score`,`stuid`) values
(1,'张三','数学','89','1'),
(2,'张三','语文','80','1'),
(3,'张三','英语','70','1'),
(4,'李四','数学','90','2'),
(5,'李四','语文','70','2'),
(6,'李四','英语','80','2');
这是此表,想要实现:
序号--名字--数学--语文--英语
1 ---张三--89----80-----70 格式的统计 求教啊,
------解决方案--------------------sql 行转列 。
------解决方案--------------------select t.user_name as 姓名,
sum(decode(t.course, '语文', score,null)) as 语文,
sum(decode(t.course, '数学', score,null)) as 数学,
sum(decode(t.course, '英语', score,null)) as 英语
from test_tb_grade t
group by t.user_name
order by t.user_name