用子查询最安全,最方便:
SELECT 表1.*,
项11=11,项目11成绩=(select 成绩 from 表2 where 表2.考号=表1.考号 and 项目=11),
项12=12,项目12成绩=(select 成绩 from 表2 where 表2.考号=表1.考号 and 项目=12),
项13=13,项目13成绩=(select 成绩 from 表2 where 表2.考号=表1.考号 and 项目=13)
from 表1
order by 考号
很显然,如果要增加项目,只需复制任一项目行,然后改项目号即可。
select 表1.考号,表1.姓名,表二.项目 as 项目11,表二.成绩 as 项目11成绩,'' as 项目12,'' as 项目12成绩,'' as 项目13,'' as 项目13成绩
from 表1
left join 表二
on 表1.考号 = 表二.考号
where 表二.项目 = 11
union
select 表1.考号,表1.姓名,'','',表二.项目,表二.成绩,'',''
from 表1
left join 表二
on 表1.考号 = 表二.考号
where 表二.项目 = 12
union
select 表1.考号,表1.姓名,'','','','',表二.项目,表二.成绩
from 表1
left join 表二
on 表1.考号 = 表二.考号
where 表二.项目 = 13
首先,我觉得项目11,项目12,项目13这3列是多余的
(不知道这3列能填什么)
其余5列:
select 表1.考号,姓名,max(case 项目 when 项目=11 then 成绩 else 0 end) as ’项目11成绩',max(case 项目 when 12 then 成绩 else 0 end) as ’项目12成绩',max(case 项目 when 13 then 成绩 else 0 end) as ’项目13成绩',
from 表1 left join 表2 on 表1.考号=表2.考号
group by 姓名