`

SQL Server行转列使用

阅读更多

最近工作需要一个行转列的需求,在网上找了一下有很多,问同事后自己也总结了一下写了个小例子。

create table score
(
	s_id int primary key identity(101,1),
	p_id varchar(20),
	s_subject varchar(20),
	s_score float,
	s_date datetime
)
insert into score(p_id,s_subject,s_score,s_date) values('xiaobo','语文',68,'2010-01-01');
insert into score(p_id,s_subject,s_score,s_date) values('xiaobo','数学',78,'2010-01-01');
insert into score(p_id,s_subject,s_score,s_date) values('xiaobo','英文',88,'2010-01-01');

insert into score(p_id,s_subject,s_score,s_date) values('xiaobo','语文',78,'2010-02-01');
insert into score(p_id,s_subject,s_score,s_date) values('xiaobo','数学',77,'2010-02-01');
insert into score(p_id,s_subject,s_score,s_date) values('xiaobo','英文',80,'2010-02-01');

insert into score(p_id,s_subject,s_score,s_date) values('xiaobo','数学',100,'2010-03-01');

insert into score(p_id,s_subject,s_score,s_date) values('mengya','语文',98,'2010-01-01');
insert into score(p_id,s_subject,s_score,s_date) values('mengya','数学',89,'2010-01-01');
insert into score(p_id,s_subject,s_score,s_date) values('mengya','英文',78,'2010-01-01');

select * from score

 

--合并统计
select p_id as 学生,
	sum(case s_subject when '数学' then s_score else 0 end) as 数学,
	sum(case s_subject when '语文' then s_score else 0 end) as 语文,
	sum(case s_subject when '英文' then s_score else 0 end) as 英语,
	sum(case s_subject when 'JAVA' then s_score else 0 end) as JAVA 
from score group by p_id

 

--列表统计
select s_id as 主键,p_id as 学生,
	sum(case s_subject when '数学' then s_score else 0 end) as 数学,
	sum(case s_subject when '语文' then s_score else 0 end) as 语文,
	sum(case s_subject when '英文' then s_score else 0 end) as 英语,
	sum(case s_subject when 'JAVA' then s_score else 0 end) as JAVA,
	s_date as 日期
from score group by s_id,p_id,s_date order by month(s_date)

 

--条件列表统计
select s_id as 主键,p_id as 学生,
	sum(case s_subject when '数学' then s_score else 0 end) as 数学,
	sum(case s_subject when '语文' then s_score else 0 end) as 语文,
	sum(case s_subject when '英文' then s_score else 0 end) as 英语,
	sum(case s_subject when 'JAVA' then s_score else 0 end) as JAVA,
	s_date as 日期
from score where p_id='xiaobo'  group by s_id,p_id,s_date order by month(s_date)

 

动手写写就会了,呵呵。

3
0
分享到:
评论

相关推荐

    sqlserver 实现 行转列 split 分割的函数

    sqlserver 实现 行转列 split 分割的函数,具体使用方法写有在文件里。

    SqlServer行转列

    ### SqlServer行转列 #### 知识点一:什么是行转列? 在数据库操作中,行转列(Pivot)是一种将数据表中的行数据转换为列数据的技术。这种技术通常用于改变数据的结构,使得原始数据更适合进一步的数据分析或报告...

    sql server动态行转列.sql

    sqlserver 动态行专列 避免了数据列过多的时候大量的使用case when then...... 原数据 : UserName Subject Score Nick 语文 80 Nick 数学 90 Nick 英语 70 Nick 生物 85 Kent 语文 80 Kent 数学 90 Kent ...

    SqlServer行转列和列转行

    SqlServer如何进行行转列和列转行方法

    行转列sql_server

    sql server 用于行转列,省得各位去找语句,select to_char(wm_concat('''' || valuelabel || '''')) name from (select distinct t.valuelabel from structuredrecruit t) select * from (select t.uhid, t....

    行转列sql实例

    行转列sql实例行转列sql实例行转列sql实例行转列sql实例行转列sql实例

    sqlserver 行转列,列转行

    列转行行转列

    sql server 中行转列

    在 SQL Server 中,“行转列”(Pivot)是一种常用的数据处理方式,它能够将表格中的行数据转换为列数据,从而使得数据更加易于理解和分析。这种方式特别适用于将汇总数据进行重新组织的情况。 #### 二、描述:代码...

    SQL行转列参考代码(sqlserver)

    在SQL Server中,"行转列"是一种常见的数据操作,它可以帮助我们把表格中的多行数据转换成一列,或者将某一列的数据转换为多列显示。这种技术在数据分析、报表制作以及信息展示中非常实用。本文将详细介绍SQL Server...

    SQL 行转列+动态获取列名

    SQL 行转列+动态获取列名 通用的动态获取列名

    SQL Server中行转列问题的终极解决

    在SQL Server中,实现行转列有多种方法,如PIVOT操作、动态SQL以及使用CASE语句。其中,CASE语句是一种灵活且通用的方法,适用于那些不支持PIVOT或需要动态生成列的场景。CASE语句允许我们在查询中根据条件创建新的...

    sqlserver行变列

    ### SQL Server 行转列操作详解 在数据库管理和数据分析领域,有时我们需要将表格中的行转换成列,这种操作称为“行转列”。行转列在实际应用中非常常见,尤其是在处理具有多维度的数据集时。例如,从一个记录学生...

    Sql Server 2005 行转列的实现 (横排)

    在SQL Server 2005中,我们经常遇到这样的需求:需要将数据库中的多行数据转换为多列显示,这通常被称为“行转列”或“行列互换”。这种操作在数据分析、报表制作或者简化数据显示时非常有用。本文将详细讲解如何在...

    SQL Server将一列的多行内容拼接成一行的实现方法

    昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 ...

    sql列转行以及行转列的通用存储过程

    根据提供的标题、描述、标签及部分内容,本文将详细介绍SQL中实现列转行及行转列通用存储过程的具体方法,特别是针对Microsoft SQL Server版本的应用场景。 ### 标题解析:SQL列转行及行转列的通用存储过程 该标题...

    SQL Server 数据行转列

    sqlserver 行数据转成列数据,#temp1为数据表,#temp2为辅助表,具体场景可微调替换。

    sql行转列解决方案.

    标题与描述均提到“SQL行转列解决方案”,这主要指的是在SQL中将数据表...总之,行转列是SQL数据处理中的一项重要技能,通过熟练掌握`CASE`语句、动态SQL以及聚合函数的使用,可以高效地满足各类数据整理和分析的需求。

    SQL Server行转列的方法解析

    首先,我们可以使用SQL Server的`PIVOT`操作来实现行转列。`PIVOT`操作是SQL Server 2005引入的一个新特性,它允许我们将某个列的值转换为列标题,同时将其他列的值根据这些标题进行聚合。下面是一段基本的`PIVOT`...

Global site tag (gtag.js) - Google Analytics