行转换为列

行转列

例如:把图1转换成图2结果展示

图1

图2


1

2

3

4

5

6

7

CREATE TABLE `TEST_TB_GRADE` (

  `ID` int(10) NOT NULL AUTO_INCREMENT,

  `USER_NAME` varchar(20) DEFAULT NULL,

  `COURSE` varchar(20) DEFAULT NULL,

  `SCORE` float DEFAULT ‘0‘,

  PRIMARY KEY (`ID`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


1

2

3

4

5

6

7

8

9

10

insert into TEST_TB_GRADE(USER_NAME, COURSE, SCORE)  values

("张三""数学", 34),

("张三""语文", 58),

("张三""英语", 58),

("李四""数学", 45),

("李四""语文", 87),

("李四""英语", 45),

("王五""数学", 76),

("王五""语文", 34),

("王五""英语", 89);

  

行转列SQL:


1

2

3

4

5

6

SELECT user_name ,

    MAX(CASE course WHEN ‘数学‘ THEN score ELSE END ) 数学,

    MAX(CASE course WHEN ‘语文‘ THEN score ELSE END ) 语文,

    MAX(CASE course WHEN ‘英语‘ THEN score ELSE END ) 英语

FROM test_tb_grade

GROUP BY USER_NAME;

  

列转行

例如:把图1转换成图3结果展示

图3

列转行SQL:


1

2

3

4

select user_name, ‘语文‘ COURSE , CN_SCORE as SCORE from test_tb_grade2

union select user_name, ‘数学‘ COURSE, MATH_SCORE as SCORE from test_tb_grade2

union select user_name, ‘英语‘ COURSE, EN_SCORE as SCORE from test_tb_grade2

order by user_name,COURSE;

【转载自:http://blog.csdn.net/jx_870915876/article/details/52403472】

原文地址:https://www.cnblogs.com/longsanshi/p/11975830.html

时间: 2024-11-02 23:14:26

行转换为列的相关文章

Sql 行转换为列 以及列转换为行的心得

这是 创建数据库的脚本文件 CREATE TABLE [dbo].[stu]( [学号] [nvarchar](255) NOT NULL, [姓名] [nvarchar](255) NULL, [性别] [nvarchar](255) NULL, [专业] [nvarchar](255) NULL, [院系] [nvarchar](255) NULL ) ON [PRIMARY] GO INSERT [dbo].[stu] ([学号], [姓名], [性别], [专业], [院系]) VALU

mysql行转换为列

1.建表 CREATE TABLE `t_log_code_num` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `server_id` int(3) NOT NULL,  `date` date NOT NULL,  `code` varchar(20) NOT NULL,  `num` int(10) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; 2.录入数据 IN

mysql 行转换为列

http://www.cnblogs.com/acelove/archive/2004/11/29/70434.html上提到了一个行列转换的方法,其实在2005里有更可读的写法,就是使用pivot运算符: create table abc (student varchar(50),class varchar(50),grade int)INSERT INTO abcSELECT '孙小美','数学',10 UNION ALLSELECT '孙小美','语文',20 UNION ALLSELEC

列转行且行转列

原数据格式如下: 这是学生的成绩表,每科为一列,要求转换为下面的格式: 即,把把课程列转换为行,把学生行转换为列: 建表: create table #a(name varchar(20),english int,chinese int ,math int)insert into #a values( 'zhangsan',10,39,40)insert into #a values( 'lisi',16,25,36) 思路:先把列转换为行: select name,km,scorefrom(s

T-SQL 实现行转列

问题: 我正在寻找一种有效的方式将行转换为SQL服务器中的列 例如,通过下表如何构建出预期结果表. Id  Value   ColumnName 1   John    FirstName 2   2.4     Amount 3   ZH1E4A  PostalCode 4   Fork    LastName 5   857685  AccountNumber 预期结果 FirstName   Amount  PostalCode      LastName    AccountNumber

PIVOT:行转列函数

PIVOT函数,行转列 PIVOT函数的格式如下: PIVOT(<聚合函数>([聚合列值]) FOR [行转列前的列名] IN([行转列后的列名1],[行转列后的列名2],[行转列后的列名3],.......[行转列后的列名N]))<聚合函数>就是我们使用的SUM,COUNT,AVG等Sql聚合函数,也就是行转列后计算列的聚合方式.[聚合列值]要进行聚合的列名[行转列前的列名]这个就是需要将行转换为列的列名.[行转列后的列名]这里需要声明将行的值转换为列后的列名,因为转换后的列名其

SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行

来自于 https://www.cnblogs.com/OpenCoder/p/6668882.html 我们在写Sql语句的时候没经常会遇到将查询结果行转列,列转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法.但是这样做实现起来非常复杂,而在SqlServer2005中我们有了PIVOT/UNPIVOT函数可以快速实现行转列和列转行的操作. PIVOT函数,行转列 PIVOT函数的格式如下 PIVOT(<聚合函数>([聚合列值]) FOR

C#中DataTable行转列示例

将下面表(1)格式的数据转换为表(2)格式的数据.很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且加平均值及汇总值,但因其它需求,最终需将该转化搬到C#中进行了. (表1) 表(2) 不多说了,下面开始在DataTable行转列示例: //DataTable行转列 private DataTable RCC(DataTable _outDataSource) { //从DataTable中读取不

PIVOT就是行转列,UNPIVOT就是列传行

PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值. 通俗简单的说:PIVOT就是行转列,UNPIVOT就是列传行 一.PIVOT实例 1. 建表 建立一个销售情况表,其中,year字段表示年份,quarter字段表示季度,amount字段表示销售额.quarter字段分别用Q1, Q2, Q3, Q4表示一.二.三.四季度. SQL 代码   复制 C