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

求:两张关联表统计的SQL
求:两张关联表统计的SQL

我有两张表
表A字段: id 学习专业
  1 理工
  2 文学
  3 医学

表B字段: id 学生姓名 年级 学习专业的ID
  11 学生A 1 1
  12 学生B 3 2
  13 学生C 2 2
  14 学生D 2 1
  15 学生E 3 3
  ......

表A的ID与表B的“学习专业的ID”关联,
我想得到的统计结果是(按学习专业列出):

理工 该专业学生总人数 其中1年级人数 2年级人数 3年级人数 
文学 该专业学生总人数 其中1年级人数 2年级人数 3年级人数  
医学 该专业学生总人数 其中1年级人数 2年级人数 3年级人数

------解决方案--------------------
SELECT A.学习专业,COUNT(*) AS 该专业学生总人数,
SUM(CASE WHEN B.年级=1 THEN 1 ELSE 0 END) AS [1年级人数],
SUM(CASE WHEN B.年级=2 THEN 1 ELSE 0 END) AS [2年级人数],
SUM(CASE WHEN B.年级=3 THEN 1 ELSE 0 END) AS [3年级人数]
FROM 表A AS A,表B AS B
WHERE A.ID=B.学习专业的ID
GROUP BY A.学习专业