日期:2014-05-18 浏览次数:20501 次
--这样?? SELECT A.动物, MAX(CASE WHEN B.属性 = '头' THEN B.值 ELSE 0 END) AS '头', MAX(CASE WHEN B.属性 = '脚' THEN B.值 ELSE 0 END) AS '脚', MAX(CASE WHEN B.属性 = '毛' THEN B.值 ELSE 0 END) AS '毛', MAX(CASE WHEN B.属性 = '体' THEN B.值 ELSE 0 END) AS '体' FROM 所有动物表 A LEFT JOIN 动物属性表 B ON A.动物 = B.动物 GROUP BY A.动物
------解决方案--------------------
不知道是不是误会了你的意思。 我乱写个你看看。 再补充说明下
creat table dongwu(id int,mingzi varchar(255),tou varchar(255),jiao varchar(255),ti varchar(255),mao varchar(255))
insert into dongwu(mingzi,tou,jiao,ti,mao) values('狗',20,0,0,0)
insert into dongwu(mingzi,tou,jiao,ti,mao) values('猫',0,10,0,0)
insert into dongwu(mingzi,tou,jiao,ti,mao) values('鸟',0,0,5,0)
select * from dongwu order by id desc
????
------解决方案--------------------
-- 建表
create table dongwu(dwn varchar(50));
insert into dongwu values('猫');
insert into dongwu values('狗');
insert into dongwu values('鸟');
create table dongwusx(dwn varchar(50), dws varchar(50), dwz int);
insert into dongwusx values('狗','头',20);
insert into dongwusx values('狗','毛',50);
insert into dongwusx values('猫','脚',10);
-- 查询
select a.dwn, b.dws, dwz=isnull(c.dwz,0) from dongwu a
left join(
select dws = '头'
union
select dws = '毛'
union
select dws = '脚'
union
select dws = '体'
) b on 1=1
left join dongwusx c on a.dwn = c.dwn and b.dws=c.dws
--结果
猫 脚 10
猫 毛 0
猫 体 0
猫 头 0
狗 脚 0
狗 毛 50
狗 体 0
狗 头 20
鸟 脚 0
鸟 毛 0
鸟 体 0
鸟 头 0