再写行转列和列转行

原始表:

1.列转行就是将一列的数据变成行显示,列转行使用了sum聚合函数,case when判断,列转行需要自己定义别名。

列转行语句:

SELECT SUM(CASE
WHEN T.LOC = ‘NEW YORK‘ THEN
T.DEPTNO
END) AS COLUMN_00001,
SUM(CASE
WHEN T.LOC = ‘DALLAS‘ THEN
T.DEPTNO
END) AS COLUMN_00002,
SUM(CASE
WHEN T.LOC = ‘CHICAGO‘ THEN
T.DEPTNO
END) AS COLUMN_00003,
SUM(CASE
WHEN T.LOC = ‘BOSTON‘ THEN
T.DEPTNO
END) AS COLUMN_00004
FROM DEPT T; --列转行

显示的结果:

2.行转列就是将一行变成一列显示,行转列使用了sum聚合函数,case when判断,别名要和每行中的每一列的值一样。

行转列代码:

SELECT SUM(CASE
WHEN T.LOC = ‘NEW YORK‘ THEN
T.DEPTNO
END) AS NEWYORK,
SUM(CASE
WHEN T.LOC = ‘DALLAS‘ THEN
T.DEPTNO
END) AS DALLAS,
SUM(CASE
WHEN T.LOC=‘CHICAGO‘ THEN
T.DEPTNO
END) AS CHICAGO,
sum(CASE
WHEN T.LOC=‘BOSTON‘ THEN
T.DEPTNO
END) AS BOSTON
FROM DEPT T;

显示结果:

时间: 2024-10-10 01:43:17

再写行转列和列转行的相关文章

SQLServer处理行转列和列转行

掌握SQL Server 行转列和列转行 1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  行转列案例 WITH T AS ( SELECT 1 as TeamId,'测试团队1' as Team,80 'MEN',20

做图表统计你需要掌握SQL Server 行转列和列转行

说在前面 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需要用到行转列和列转行. 1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  行转列案例

oracle 行转列、列转行

最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle  列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max(date_201501) as date_201501,max(date_201502),max(date_201503),max(date_201504) from (select t.user_name,case when t.acct_date = '201501' then t.flow

重温SQL——行转列,列转行

行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现.用传统的方法,比较好理解.层次清晰,而且比较习惯. 但是PIVOT .UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单.更具可读性.下面我们通过几个简单的例子来介绍一下列转行.行转列问题. 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列 CREATE TAB

SQL——行转列,列转行

行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现.用传统的方法,比较好理解.层次清晰,而且比较习惯. 但是PIVOT .UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单.更具可读性.下面我们通过几个简单的例子来介绍一下列转行.行转列问题. 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列 CREATE TAB

sql 行转列 PIVOT 列转行 UNPIVOT

原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 22 2013 公司3 32 2012 公司1 42 2012 公司2 52 2012 公司3 62 表二: 年 公司1 公司2 公司3 2012 42 52 62 2013 12 22 32 可使用sql2005之后提供的PIVOT 具体操作如下: select * from   t_table1

行转列或列转行写法

原文:行转列或列转行写法 两种方式: /* 实现行转列 a name objec score a EN 89 a CH 78 a HO 99 b EN 34 b CH 88 b HO 66 要求输出结果为: name EN CH HO a 89 78 99 b 34 88 66 */ USE tempdb IF (SELECT 1 FROM sys.sysobjects WHERE name ='t' AND type='u') is NOT NULL DROP TABLE t CREATE T

sqlserver 行转列、列转行[转]

转自:http://www.cnblogs.com/luofuxian/archive/2012/02/23/2364328.html Sql Server 行转列.列转行 创建表: CREATE TABLE [dbo].[tbl_Student]( [ID] [int] IDENTITY(1,1) NOT NULL, [学生ID] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [学生姓名] [nvarchar](50) COLLATE Chines

sql中的行转列和列转行的问题

sql中的行转列和列转行的问题 这是一个常见的问题,也是一个考的问题 1.行转列的问题  简单实例 CREATE TABLE #T ( MON1 INT, MON2 INT, MON3 INT ) GO INSERT INTO #T VALUES(1,2,3) GO SELECT * FROM #T --行转列:(union all) SELECT MON1 FROM #T UNION ALL SELECT MON2 FROM #T UNION ALL SELECT MON3 FROM #T G