SQL SERVER2000教程-第五章 处理数据 第二十一节 使用CASE语句、SUM函数、AVG函数进行综合数据统计

DROP TABLE 成绩表
GO
CREATE TABLE 成绩表(班组 VARCHAR(10),姓名 VARCHAR(6),学科 VARCHAR(4),成绩 INT)
GO
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('一班','王小明','数学',100)  INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('一班','王小明','语文',98)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('一班','王小明','英语',76)   INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('一班','李小东','数学',97)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('一班','李小东','语文',99)   INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('一班','李小东','英语',85)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','刘小刚','数学',100)  INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','刘小刚','语文',100)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','刘小刚','英语',96)   INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','张小英','数学',96)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','张小英','语文',88)   INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','张小英','英语',66)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','周小侠','数学',84)   INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','周小侠','语文',98)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('二班','周小侠','英语',76)   INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('三班','张大利','数学',99)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('三班','张大利','语文',100)  INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('三班','张大利','英语',100)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('三班','张冬杰','数学',50)   INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('三班','张冬杰','语文',88)
INSERT INTO 成绩表(班组,姓名,学科,成绩) VALUES('三班','张冬杰','英语',46)

--竖表变横表
SELECT 班组,
       姓名,
       SUM(CASE 学科 WHEN '数学' THEN 成绩 ELSE 000 END) AS 数学,
       SUM(CASE 学科 WHEN '语文' THEN 成绩 ELSE 000 END) AS 语文,
       SUM(CASE 学科 WHEN '英语' THEN 成绩 ELSE 000 END) AS 英语,
       AVG(CASE 学科 WHEN '数学' THEN 成绩 ELSE 000 END+
           CASE 学科 WHEN '语文' THEN 成绩 ELSE 000 END+
           CASE 学科 WHEN '英语' THEN 成绩 ELSE 000 END) AS 平均成绩
INTO 成绩表横表
FROM 成绩表
GROUP BY 班组,姓名
ORDER BY 平均成绩 DESC

你可能感兴趣的:(case,table,SUM,drop,AVG)