ACCESS 行转列

鲸碳耗 2012-09-18 01:44:26
有两张表
表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语句
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
鲸碳耗 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SELECT score.sname, sum(IIf(subject='s01',score,0)) AS 语文, sum(IIf(subject='s02',score,0)) AS 数学
试试
或者对结果再一次select并group by 名称
[/Quote]

一语点醒啊
最后是这样的

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


不过现在我在担心 如果我直接把这个数据绑定到datagridview中以后 可以直接编辑某生某科成绩 然后自动更新至数据库中吗
bdmh 2012-09-18
  • 打赏
  • 举报
回复
SELECT score.sname, sum(IIf(subject='s01',score,0)) AS 语文, sum(IIf(subject='s02',score,0)) AS 数学
试试
或者对结果再一次select并group by 名称

110,825

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧