首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

大家帮小弟我看看这个有关问题

2012-01-22 
大家帮我看看这个问题表Aidtitle1好人2坏人3最好的人4最坏的人表BIDClassAID1A12B23A3想要的一个结果A.idt

大家帮我看看这个问题
表A
idtitle
1好人
2坏人
3最好的人
4最坏的人


表B
IDClassAID
1A1
2B2
3A3


想要的一个结果
A.idtitleB.IDB.CLASS
1好人1A
2坏人NULLNULL
3最好的人3A
4最坏的人NULLNULL
1好人NULLNULL
2坏人2B
3最好的人NULLNULL
4最坏的人NULLNULL



[解决办法]
select A.id,A.title,B.ID,B.CLASS
from 表A A left join (select * from 表B where Class= 'A ') B on A.id=B.id
union
select A.id,A.title,B.ID,B.CLASS
from 表A A left join (select * from 表B where Class= 'B ') B on A.id=B.id
[解决办法]
/*** 测试:Limpire ***/

--创建表变量:@A
declare @A table(id int,title varchar(8))
insert @A
select 1, '好人 ' union all
select 2, '坏人 ' union all
select 3, '最好的人 ' union all
select 4, '最坏的人 '
--创建表变量:@B
declare @B table(ID int,Class varchar(1),AID int)
insert @B
select 1, 'A ',1 union all
select 2, 'B ',2 union all
select 3, 'A ',3

select a.*, ID = case b.Class when 'A ' then b.ID else null end, Class = case b.Class when 'A ' then b.Class else null end from @A a left join @B b on a.ID = b.ID
union all
select a.*, ID = case b.Class when 'B ' then b.ID else null end, Class = case b.Class when 'B ' then b.Class else null end from @A a left join @B b on a.ID = b.ID

/*
idtitleIDCLASS
1好人1A
2坏人NULLNULL
3最好的人3A
4最坏的人NULLNULL
1好人NULLNULL
2坏人2B
3最好的人NULLNULL
4最坏的人NULLNULL
*/

热点排行