日期:2014-05-17  浏览次数:21054 次

ACCESS 行转列
有两张表
表score:
sname subject score
学生 科目编号 考分
(数据)
学生1 s01 90
学生1 s02 80
学生2 s01 89

表subject:
subjectno subjectname
科目编号 科目名称
(数据)
s01 语文
s02 数学


要求查询得到的数据为:
  语文 数学
学生1 90 80
学生2 89 0

查询语句该怎么写呢 我现在的办法是:

SELECT score.sname, IIf(subject='s01',score,0) AS 语文, IIf(subject='s02',score,0) AS 数学
FROM score INNER JOIN subject ON score.subject = subject.subjectno

但是这样查出来的数据为:
  语文 数学
学生1 90 0
学生1 0 80
学生2 89 0

有没有办法改善SQL文 使查询结果中的学生1的数据合并为一行
或者有没有更好的sql语句

------解决方案--------------------
SELECT score.sname, sum(IIf(subject='s01',score,0)) AS 语文, sum(IIf(subject='s02',score,0)) AS 数学
试试
或者对结果再一次select并group by 名称