id name date value
1 A 2006年 106
2 A 2007年 107
3 A 2008年 108
4 B 2006年 106
5 B 2007年 107
6 B 2008年 108
7 C 2006年 106
8 C 2007年 107
9 C 2008年 108把上面的用select怎么变成下面的那样啊name 2006年 2007年 2008年
A 106 107 108
B 106 107 108
C 106 107 108
1 A 2006年 106
2 A 2007年 107
3 A 2008年 108
4 B 2006年 106
5 B 2007年 107
6 B 2008年 108
7 C 2006年 106
8 C 2007年 107
9 C 2008年 108把上面的用select怎么变成下面的那样啊name 2006年 2007年 2008年
A 106 107 108
B 106 107 108
C 106 107 108
sum(if(date='2006年',value,0)) 2006年,
sum(if(date='2007年',value,0)) 2007年,
sum(if(date='2008年',value,0)) 2008年
from mytable
group by name;
(select a.value from table_name a where a.data="2006年" and name=b.name) as '2006年',
(select a1.value from table_name a1 where a.data="2007年" and name=b.name) as '2007年',
(select a2.value from table_name a2 where a.data="2008年" and name=b.name) as '2008年',
from table_name b 这样就OK了 给分吧 a.data里面的值 你根据数据库来赋值吧
http://topic.csdn.net/u/20100107/10/d0b18f4b-2b34-4436-a192-2472c96d0867.html?18136
create table mytable(
id int,
name varchar(10),
date varchar(10),
value int
);insert into mytable values(1,'A','2006','106');
insert into mytable values(2,'A','2007','107');
insert into mytable values(3,'A','2008','108');
insert into mytable values(4,'B','2006','106');
insert into mytable values(5,'B','2007','107');
insert into mytable values(6,'B','2008','108');
insert into mytable values(7,'C','2006','106');
insert into mytable values(7,'C','2007','107');
insert into mytable values(7,'C','2008','108');
insert into mytable values(1,'A','2006','106');select a.name,a.value as '2006',b.value as '2007',c.value as '2008' from(select name,value from mytable where date='2006')a
left join(select name as name,value from mytable where date='2007')b
on a.name=b.name left join(select name as name,value from mytable where date='2008')c
on a.name=c.name