`
ruvuoai
  • 浏览: 95731 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SQLServer中的行转列问题

SQL 
阅读更多
行转列问题主要分为两类。

  1)简单的行转列问题:

  示例表:

  id sid course result

  1 2005001 语文 80.0

  2 2005001 数学 90.0

  3 2005001 英语 80.0

  4 2005002 语文 56.0

  5 2005002 数学 69.0

  6 2005002 英语 89.0

  执行:

  select sid,语文=isnull(sum(case course when '语文' then result end),0),
  数学=isnull(sum(case course when '数学' then result end),0),
  英语=isnull(sum(case course when '英语' then result end),0)
  from result
  group by sid
  order by sid


  得出结果:

  sid 语文 数学 英语

  2005001 80.0 90.0 80.0

  2005002 56.0 69.0 89.0

  2)较为复杂的行转列

  表1:course

  id name

  1 语文

  2 数学

  3 英语

  表2:result

  id sid course result

  1 2005001 语文 80.0

  2 2005001 数学 90.0

  3 2005001 英语 80.0

  4 2005002 语文 56.0

  5 2005002 数学 69.0

  6 2005002 英语 89.0

   declare @sql varchar(8000) 
  set @sql='select sid' 
  select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)' 
  from course order by id 
  set @sql=@sql+' from result group by sid order by sid' 
  print @sql 
  exec(@sql)


  得出结果

  sid 语文 数学 英语

  2005001 80.0 90.0 80.0

  2005002 56.0 69.0 89.0
分享到:
评论

相关推荐

    sql server动态行转列.sql

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

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

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

    SqlServer行转列和列转行

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

    SqlServer行转列

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

    行转列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 Server 2005 行转列的实现 (横排)

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

    SQL Server行转列使用

    T-SQL(Transact-SQL)是微软SQL Server所使用的扩展SQL语言,它提供了丰富的数据处理功能,包括行转列。在SQL Server中,有两种主要的方法可以实现这一转换: 1. 使用CASE语句: CASE语句是SQL中一个非常强大的...

    行转列sql实例

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

    SQL Server 数据行转列

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

    SQL行转列参考代码(sqlserver)

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

    sqlserver 把行转成列

    在SQL Server中,将行转换为列是一种常见的数据操作,主要通过使用PIVOT操作或者CASE...通过分析这个文件,你可以更直观地学习如何在SQL Server中进行行转列操作。请打开文件查看具体代码,并根据实际情况调整和使用。

    sqlserver 行转列,列转行

    列转行行转列

    sql server 中行转列

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

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

    通过熟练掌握CASE语句,你可以在SQL Server中有效地处理行转列问题,无论是在静态还是动态场景下。了解并掌握这些技巧,将使你在处理复杂数据转换时更加游刃有余,提升数据处理能力。在实际工作中,结合具体需求,...

    SQL 行转列+动态获取列名

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

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

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

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

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

    Sql,oracle数据表行转列问题

    在SQL Server 2000中,我们可以使用CASE WHEN语句和MAX聚合函数来实现行转列操作。下面是一个示例代码: ```sql select 姓名 as 姓名, max(case 课程 when '语文' then 分数 else 0 end) 语文, max(case 课程 ...

    sqlserver行变列

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

Global site tag (gtag.js) - Google Analytics