多语言展示
当前在线:176今日阅读:176今日分享:34

数据库横纵列交换

接触数据库比较多,所以有时候喜欢看一些关于数据库的东西。很多时候我会觉得只是做的一个搬运而已,可是我觉得很有意义,第一对于自己而言,可以防止自己忘记不方便找;第二多个平台都能搜索到,方便需要帮助的读者查找。这次讲关于横列转换成纵列以及纵列转换成横列。
工具/原料
1

电脑一台

2

SQL Server 数据库,本人使用的2008版本

方法/步骤
1

前面废话太多了,这里直接切入正题。首先,我先讲解横列转换成纵列的实现方法,主要还是以图片的形式展现出来,我也会把实现的SQL语句粘贴出来方便大家复制。

2

例如怎么将上图转换成下图呢?就是把名字合并在一起,以科目名称为列名,成绩显示在列名下面。主要实现的思路是判断Course列的值,如果和转换后列名相同则该列的值为Grade,否则为0,最后按Name排序。结果在语句下面可以看到

3

--纵表转横表,A为表名,A表中有Name,Course,Grade三列select Name,SUM(case Course when '语文' then Grade else 0 end) as 语文,SUM(case Course when '数学' then Grade else 0 end) as 语文,SUM(case Course when '英语' then Grade else 0 end) as 语文from A group by Name --Name代表姓名,Course为考试科目名称,Grade为考试分数

4

如果碰到纵列转换成横列呢?下面我就来介绍,就是我想要每名同学每一科为一横排,这个要稍微复杂一些,可以理解为:把“语文”列的值赋给”成绩“,新建一列“科目”,里面存储“语文”,把这个过程重新执行两遍,不过把”语文“更换成”数学“、”英语“然后把他们合并起来,并按姓名、科目降序排列。

6

在这里给大家一些建议,遇到没见过的问题,解决后把解决方法或者思路保存下来,例如把下面的SQL语句以sql文件形式保存下来,人总是健忘的,下次遇到忘了,很方便就可以找到,在SQL语句中可以添加注释的,例如上面的 -- 符号就是行注释符号。

注意事项

有任何关于数据库的问题可以问我,虽然我不一定懂,但是可以相互讨论,如果这篇经验的确帮助到你,麻烦帮忙投我一票,谢谢!!

推荐信息