select A.ID,A.Name,B.MarkName,C.ClassName from A left join B on B.ID=A.MarkID left join C on C.ID=A.ClassID
select A.name,B.name,C.name from A JOIN B ON A.ClassID=B.ID JOIN C ON A.MarkID=C.id
--如果从结果推测楼主的要求,应该是这样的.--测试--测试数据 create table a(id int,name varchar(10),classid char(3),id char(3)) insert a select 1,'小明','001','001' union all select 2,'小明','001','002' union all select 3,'小明','001','003'create table b(id char(3),name varchar(10)) insert b select '001','语文' union all select '002','数学' union all select '003','英語' go--处理 declare @s varchar(8000) set @s='' select @s=@s+',['+name+']=max(case id when '''+id+''' then '''+name+''' else '''' end)' from b exec('select name'+@s+' from a group by name') go--删除测试 drop table a,b/*--测试结果 name 语文 数学 英語 ---------- ---- ---- ---- 小明 语文 数学 英語 --*/
--如果从结果推测楼主的要求,应该是这样的.--测试--测试数据 create table a(id int,name varchar(10),classid char(3),id char(3)) insert a select 1,'小明','001','001' union all select 2,'小明','001','002' union all select 3,'小明','001','003'create table b(id char(3),name varchar(10)) insert b select '001','语文' union all select '002','数学' union all select '003','英語'create table c(id char(3), ClassName varchar(10)) insert c select '001','計算機一班' go--处理 declare @s varchar(8000) set @s='' select @s=@s+',['+name+']=max(case id when '''+id+''' then '''+name+''' else '''' end)' from b exec('select 姓名=a.name,班级=c.ClassName'+@s+' from a join c on a.classid=c.id group by a.name,c.ClassName') go--删除测试 drop table a,b,c/*--测试结果姓名 班级 语文 数学 英語 ---------- ---------- ---- ---- ---- 小明 計算機一班 语文 数学 英語 --*/
from A
left join B on B.ID=A.MarkID
left join C on C.ID=A.ClassID
from A
JOIN B ON A.ClassID=B.ID
JOIN C ON A.MarkID=C.id
create table a(id int,name varchar(10),classid char(3),id char(3))
insert a select 1,'小明','001','001'
union all select 2,'小明','001','002'
union all select 3,'小明','001','003'create table b(id char(3),name varchar(10))
insert b select '001','语文'
union all select '002','数学'
union all select '003','英語'
go--处理
declare @s varchar(8000)
set @s=''
select @s=@s+',['+name+']=max(case id when '''+id+''' then '''+name+''' else '''' end)'
from b
exec('select name'+@s+' from a group by name')
go--删除测试
drop table a,b/*--测试结果
name 语文 数学 英語
---------- ---- ---- ----
小明 语文 数学 英語
--*/
create table a(id int,name varchar(10),classid char(3),id char(3))
insert a select 1,'小明','001','001'
union all select 2,'小明','001','002'
union all select 3,'小明','001','003'create table b(id char(3),name varchar(10))
insert b select '001','语文'
union all select '002','数学'
union all select '003','英語'create table c(id char(3), ClassName varchar(10))
insert c select '001','計算機一班'
go--处理
declare @s varchar(8000)
set @s=''
select @s=@s+',['+name+']=max(case id when '''+id+''' then '''+name+''' else '''' end)'
from b
exec('select 姓名=a.name,班级=c.ClassName'+@s+' from a join c on a.classid=c.id
group by a.name,c.ClassName')
go--删除测试
drop table a,b,c/*--测试结果姓名 班级 语文 数学 英語
---------- ---------- ---- ---- ----
小明 計算機一班 语文 数学 英語
--*/