`

数据库行转列

 
阅读更多
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)
分享到:
评论

相关推荐

    主流数据库行转列实例

    主流数据(ORACLE,DB2)行转列实例,包括2种实现方式,通过case..when和left join..on;大牛补充其他的实现方式。

    sql动态行转列 存储过程

    在SQL数据库操作中,"行转列"是一种常见的数据转换需求,它将表格中的多行数据转换为单列显示,通常用于数据汇总和分析。在本案例中,我们主要探讨如何使用SQL语句,尤其是存储过程,来实现动态的行转列功能。这在...

    Sql语句实现表的行列转换,行转列,列转行

    ### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...

    数据库行变列查询 实现方法

    ### 数据库行变列查询实现方法 #### 一、引言 在数据库操作中,有时我们需要将表中的数据从行转换为列,这种操作被称为“行转列”...通过上述步骤,我们可以有效地实现数据库行转列的需求,从而更好地组织和展示数据。

    oracle动态行转列

    其中,“行转列”(Pivot)是一种常见的数据转换需求,尤其在数据分析和报告生成时尤为重要。本文将深入探讨如何通过Oracle中的存储过程实现动态“行转列”,并结合给定文件的信息,详细解析其工作原理、优点及应用...

    数据库表行转列

    数据库里的,表里的行转列

    access行转列示例

    Access作为一款流行的桌面级数据库管理系统,提供了丰富的数据操作功能,其中包括“行转列”和“列转行”的操作,这对于数据展示和分析有着极大的便利性。在本文中,我们将深入探讨Access中的这种转换方法及其实际...

    DB2 SQL 实现行转列,列转行

    DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列

    Linq动态查询、行转列

    本篇将深入探讨如何利用LINQ进行动态查询以及如何实现行转列,这对于构建灵活的数据分析和展示功能至关重要。 首先,让我们来理解什么是LINQ动态查询。在传统的LINQ查询中,我们通常使用lambda表达式或方法链来定义...

    selectcase实现行转列.txt

    本sql实现了数据库行转列的汇总查询,一条sql搞定全部计算

    java行转列的例子

    "java行转列"这个主题是数据处理中的一个常见需求,尤其是在数据分析、报表生成或数据显示时。当我们从数据库中获取数据,有时会遇到单个字段的数据需要在用户界面上以列的形式展示,这时就需要进行数据的行列转换。...

    kettle行转列详解

    在数据处理过程中,有时我们需要将数据从行格式转换为列格式,或者反之,这被称为“行转列”或“列转行”。在Kettle中实现这一功能,可以通过“Row to Column”或“Column to Row”步骤来完成。 在本文中,我们将...

    gp 行转列测试数据

    总的来说,"gp 行转列测试数据"的主题涉及到数据库管理系统中的数据转换技术,尤其是Greenplum中的行转列操作,以及如何通过测试来评估不同方法的性能。这对于优化数据处理流程、提高查询效率以及理解数据库系统内部...

    mysql复杂动态行转列解决方案

    当我们在处理数据时,有时会遇到需要将多行数据转换为一列的情况,这被称为“行转列”操作。在本篇中,我们将深入探讨如何在MySQL中解决复杂的动态行转列问题。 首先,我们要理解行转列的基本概念。在传统的SQL查询...

    Oracle行转列(不定列)

    其中,"行转列(不定列)"是数据库查询中的一种常见需求,尤其是在数据分析和报表生成时。本篇文章将详细探讨Oracle如何实现行转列为列的过程,以及在面对不确定列数时的解决方案。 在传统的SQL查询中,数据通常是...

    C#行转列的实现

    在c#后台实现 行转列的显示功能,这样就是可以不借助sql数据库的查询分析器功能也可以实现行转列功能的实现了

    Oracle行转列之pivot

    在Oracle数据库中,行转列(也称为数据透视)和列转行(unpivot)是SQL查询中用于数据转换的高级功能。从Oracle 11g版本开始,引入了PIVOT和UNPIVOT关键字,以支持显式的查询转换,即从行数据转换为列数据,或从列...

    oracle行转列

    "Oracle行转列"是数据库查询中常见的一种需求,尤其是在数据分析和报表展示时。这个主题涉及到Oracle数据库中的聚合函数、分析函数以及一些高级SQL技巧。 首先,"行转列"的基本思想是将数据库表中的一列数据转换为...

    行转列、列名转行

    行转列主要是将数据库表中的多行数据转换为单行的多个列,这在统计和报表制作时非常有用。SQL Server中可以使用PIVOT操作来实现。假设我们有一个销售数据表,包含产品ID、销售日期和销售额三列,我们想按月份汇总每...

    数据库动态生成列数据库纵向列转横向列

    ### 数据库动态生成列——数据库纵向列转横向列 #### 背景介绍 在数据库管理与数据分析领域,经常会遇到需要将数据从一种格式转换到另一种格式的需求,尤其是在处理报表或者进行复杂的数据分析时。例如,有时候我们...

Global site tag (gtag.js) - Google Analytics