本文共 505 字,大约阅读时间需要 1 分钟。
晚上回到宿舍,舍友问起我今天他们笔试的一个题目:
如何把一个一维表转换成二维表
SQL查询该如何写呢? 一维表table a如下: 年级 课目 人数 2001 语文 20 2001 数学 15 2002 语文 20 2002 数学 15 2003 语文 20 2003 数学 15 如何转换成如下格式的二维表: 语文 数学 2001 20 15 2002 20 15 2003 20 15
对于这类问题,有两种方法:一种是直接写,
通过原来的一维表a,构造出新的表。首先,查询出所需的表的列,分别是年级、科目(这里直接写的方法必须是要知道表a 科目的值,一一列举),然后通过复合查询,将各个科目的分数分别赋给其科目。
select 年级,(select 人数 from tablename a where a.年级=b.年级 and a.课目='数学') as 数学 ,(select 人数 from tablename a where a.年级=b.年级 and a.课目='语文') as 语文 from tablename b group by 年级 order by 年级
另外一种是动态SQL的方法。
转载地址:http://ymzvi.baihongyu.com/