access多表查询菜鸟问题2!
有如下结构个表  
jbqk 表  
id   name   birtheday  bj  xh      
1     张三    1980-1-2   1  006554
2     李四    1980-1-2   2  003259
bj 表  
id   name  fid
1    一班   3
2    二班   3
3    初一   0
km 表
id   name
1    语文
2    数学
3    英语
cjb 表
id   xh       name  kmid  cj  datetime
1    006554   张三    1    65   2007-1-6
2    006554   张三    2    75   2007-1-6
3    003259   李四    1    68   2007-1-7
4    003259   李四    2    80   2007-1-7
5    006554   张三    1    85   2007-6-6
6    006554   张三    2    95   2007-6-6
7    003259   李四    1    88   2007-6-7
8    003259   李四    2    89   2007-6-7
如果想查询结果是  
name   xh      bj     语文    数学     
张三   006554   一班     65     75
李四   003259   二班     68     80
张三   006554   一班     85     95
李四   003259   二班     88     89
该如何写sql语句呢?  
如果仅仅显示:(最近一次成绩)
name   xh      bj     语文    数学     
张三   006554   一班     85     95
李四   003259   二班     88     89
或者(某人单项成绩该)
name   xh      bj     语文    数学     
张三   006554   一班     65     75
张三   006554   一班     85     95
又该如何写sql语句呢!    
------解决方案--------------------或者(某人单项成绩该)
name   xh      bj     语文    数学   
张三   006554   一班     65     75
张三   006554   一班     85     95
transform max(cj)
select name,xh,bjname,datetime from  
(SELECT d.*, e.name AS bjname
FROM (SELECT a.*, b.name AS kmname, c.bj
FROM (cjb AS a INNER JOIN km AS b ON a.kmid = b.id) INNER JOIN jbqk AS c ON a.xh = c.xh) AS d LEFT JOIN bj AS e ON d.bj=e.id
) where xh=6554 group by name,xh,bjname,datetime  
pivot kmname  
name   xh      bj     语文    数学   
张三   006554   一班     65     75
李四   003259   二班     68     80
张三   006554   一班     85     95
李四   003259   二班     88     89
该如何写sql语句呢? 
transform max(cj)
select name,xh,bjname,datetime from  
(SELECT d.*, e.name AS bjname
FROM (SELECT a.*, b.name AS kmname, c.bj
FROM (cjb AS a INNER JOIN km AS b ON a.kmid = b.id) INNER JOIN jbqk AS c ON a.xh = c.xh) AS d LEFT JOIN bj AS e ON d.bj=e.id
)  group by name,xh,bjname,datetime  
pivot kmname  
自己排序
如果仅仅显示:(最近一次成绩)
name   xh      bj     语文    数学   
张三   006554   一班     85     95
李四   003259   二班     88     89  
------解决方案--------------------如果仅仅显示:(最近一次成绩)
name   xh      bj     语文    数学   
张三   006554   一班     85     95
李四   003259   二班     88     89 
TRANSFORM max([cj])
SELECT [name], [xh], [bjname]
FROM (SELECT a.*, b.cj
FROM (SELECT [name], [xh],kmname,kmid, [bjname], max([datetime]) as ma
FROM 查询3
GROUP BY [name], [xh],kmname, kmid,[bjname]) AS a LEFT JOIN cjb AS b ON (a.ma=b.[datetime]) AND (a.xh=b.xh) AND (a.kmid=b.kmid)
)
GROUP BY [name], [xh], [bjname]
PIVOT [kmname];