SQL如何行转列

对于T-SQL老手来说,行转列已不稀奇。但对于新手来说,对行转列的思维方式还很模糊。
今天我要总结一下我所掌握的行转列的思维方式,以帮助有需要的朋友更清楚的理解行转列的方法。

行转列的理解方式:

  • 01

    行转列前,所有列的筛选条件都一样,只是被分组了。 行转列后,每一列各有自己的筛选条件,筛选条件就是行转列前所分组的值。

示例:

  • 01

    源数据: SELECT user_name,dept_no FROM trm_user

  • 02

    要求统计每个部门下的人数: SELECT dept_no,count(1) AS 'count' FROM trm_user GROUP BY dept_no

  • 03

    行转列要求部门在第一行,第二行显示人数: SELECT 'ATD','MACAU','AIAPT' UNION all select convert(VARCHAR,count(CASE WHEN dept_no='ATD' THEN 1 END)), convert(VARCHAR,count(CASE WHEN dept_no='MACAU' THEN 1 END)), convert(VARCHAR,count(CASE WHEN dept_no='AIAPT' THEN 1 END)) FROM trm_user

    对比:

    • 01

      对比一下前面语句的不同,是否发现了什么?

      总结:

      • 01

        行转列即是把行转列前的分行条件,分别作为行转列后的各列的筛选条件。

        扩展:

        • 01

          易理解的写法: SELECT 'ATD','MACAU','AIAPT' UNION all SELECT convert(VARCHAR,(SELECT count(1) FROM trm_user WHERE dept_no='ATD')), convert(VARCHAR,(SELECT count(1) FROM trm_user WHERE dept_no='MACAU')), convert(VARCHAR,(SELECT count(1) FROM trm_user WHERE dept_no='AIAPT'))

        (0)

        相关推荐

        • SQL SERVER 行转列和列转行

          行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和 ...

        • 如何在Word表格中插入行或列的几种方法图解教程

          在制作表格的实际操作过程中,难免会遇到由于创建表格时未充分考虑,而需要向表格中插入/删除行或列的情况,例如在word2003表格的最右边一列的右侧插入一列作为“备注”列。下面介绍几种在创建好的表格中插 ...

        • 如何删除修改Excel2003工作簿中的行号列标字体

          Excel中的行号(左侧的数字1、2、3、……)和列标(顶部的字母A、B、C、……)的默认字体为宋体、12或宋体(正文11)。有时某些Excel 工作簿的行号列标的字体不是默认字体,需要将其改为默认字 ...

        • Excel行与列相互转换实现行列互换的方法

          大家知道matlab中有个功能叫做转置……而matlab处理的数据毕竟是适合运算不适合观看,总不能排版的时候发现表格要转置一下结果去用matlab吧,这不是犯傻了么?!其实用excel转置表格(行与列 ...

        • 在excel2003中如何隐藏显示行与列的方法

          在使用excel制表的时候我们会使用的对数据进行隐藏显示的情况,而今天脚本之家就给大家讲解在excel中是如何隐藏及显示行与列单元格的相关内容,操作方法有很多,下面我们就一起来看看。 一、excel2 ...

        • excel2007冻结窗格以锁定特定行或列

          在工作表中,执行下列操作之一: 要锁定行,请选择其下方要出现拆分的行。 要锁定列,请选择其右侧要出现拆分的列。 要同时锁定行和列,请单击其下方和右侧要出现拆分的单元格。 如何选择单元格、区域、行或列在 ...

        • Excel2003删除修改行号列标字体

          Excel中的行号(左侧的数字1、2、3、……)和列标(顶部的字母A、B、C、……)的默认字体为宋体、12或宋体(正文11)。有时某些Excel 工作簿的行号列标的字体不是默认字体,需要将其改为默认字 ...

        • excel中给单元格.行或列填充颜色

          我们在excel中先选中要填充颜色的单元格,然后点击excel菜单栏中填充工具后面的小三角。 这时会出现一个下拉菜单,里面有各种颜色的小方块,你可以选择一种你喜欢的颜色点击。 看,那个选中的单元格已经 ...

        • Excel复制表格有技巧行号列标不能少

          Excel复制表格有技巧 行号列标不能少