日期:2014-05-16  浏览次数:21110 次

纵向转横向
我有一个 Access 的数据表Test,结构如下
id 学号 科目 成绩
-----------------------------
1 2 语文 89
2 2 数学 67
3 2 英语 78
4 3 语文 85
5 3 数学 67
6 3 英语 55
7 4 语文 76
8 4 数学 73
9 4 英语 84

---- 注意,科目是动态增加的
想通过代码实现为:
学号 语文 数学 英语 总分 平均分
2 89 67 78 234 78
3 85 67 55 207 69
4

请各位大侠帮解决下,主要是ACCESS本人没有用过。  


------解决方案--------------------
select 学号,
sum(iif(科目='语文',成绩,0)) as 语文,
sum(iif(科目='数学',成绩,0)) as 数学,
sum(iif(科目='英语',成绩,0)) as 英语,
sum(成绩) as 总分,
avg(成绩) as 成绩
from Test
group by 学号
------解决方案--------------------
问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
------解决方案--------------------
SQL code
TRANSFORM first(成绩)
SELECT 学号,COUNT(成绩) AS 总分,AVG(成绩) AS 平均分
FROM 成绩表
GROUP BY 学号
PIVOT 科目