在企业应用中,经常会开发报表系统,而在报表中又经常用到行列转换,这里有一个经典的应用实例:
原表:
姓名 科目 成绩
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 物理 82
李四 英语 90
李四 政治 70
王五 英语 90
转换后的表:
姓名 数学 物理 英语 语文 政治
李四 0 82 90 85 70
王五 0 0 90 0 0
张三 90 85 0 80 0
实例:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS(SELECT * FROM dbo.sysobjects WHERE name=N'cj')
DROP TABLE cj
GO
CREATE TABLE [dbo].[cj](
[name] [nvarchar](50) NULL,
[major] [nvarchar](50) NULL,
[grade] [int] NULL
) ON [PRIMARY]
GO
INSERT INTO cj VALUES('张三','语文',80)
INSERT INTO cj VALUES('张三','数学',90)
INSERT INTO cj VALUES('张三','物理',85)
INSERT INTO cj VALUES('李四','语文',85)
INSERT INTO cj VALUES('李四','物理',82)
INSERT INTO cj VALUES('李四','英语',90)
INSERT INTO cj VALUES('李四','政治',70)
INSERT INTO cj VALUES('王五','英语',90)
SELECT * FROM cj --显示原表内容
Declare @sql varchar(8000)
Set @sql = 'Select Name as 姓名'
Select @sql = @sql + ',sum(case major when '''+major+''' then grade else 0 end) ['+major+']'
from (select distinct major from cj) as cj1 --把所有唯一的科目的名称都列举出来
Select @sql = @sql+' from cj group by name'
Exec (@sql)
分享到:
相关推荐
SQL语句行列转换(附带数据库、表、视图操作) ,不错的文档。
Sql语句实现表的行列转换,行转列,列转行
本人在工作中遇到了涉及到数据库行列之间相互转换的问题,在网上搜索了很久也没有一个比较完整的解释,通过本人自己的摸索测试,整理出来了Oracle中SQL语句行列之间相互转换的资料,大家可以下载学习。
1. 列转行 2. 行转列 3. 多列转换成字符串 4. 多行转换成字符串 5. 字符串转换成多列 6. 字符串转换成多行
收集了一些,比较实用的sql语句和教程,SQL参考手册;行列转换等
通过一条查询语句,进行行列转换。例如 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 ...
java面试题之行列转换 Oracle 和SQLServer两种方式 详细例子以及说明 一条语句实现,绝对看得懂! 方便理解!
在SQLserver中 直接用sql 语句将数据的行转换为列
table动态行列数据转换,希望能帮到大家,是C#代码行列转换,告别传统的sql语句行列转换!
一个简单的SQL 行列转换 Author: eaglet 在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表 部门编号 部门名称 合计 正式员工 临时员工 辞退员工 1 A...
使用SQL语句,实现数据库查询结果的行列互换。
SQL 实现行列互换。例题,可以仿照写自己的SQL语句!注意语法
SQL语句实现行转列的几种方法示例,在SQL查询中经常需要行转列,文档中详细介绍了几种方法并对比
SQL语句行列转换的两种方法 case...when和pivot函数应用,运用pivot 函数只支持数据库版本2005以上的。一般运用case when else end 的方法比较多,比较普遍
首先说明这个是收集与csdn 多年来的精华帖 ...包括备份还原,导入导出、行列转换、动态sql基本语法、游标、复制 等等,可以说是丰富多彩、包罗万象。 这里不多在阐述,绝对的物超所值,谁下谁知道。
1.创建数据库表及插入数据 2.子查询统计不同性质的学生总数 3.一行数据转换成两列数据 union all 4.表行列数据转换(表转置) 1.创建数据库表及插
│ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │...
-列车车次查询.sql │ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 ...
描述了sql server的一些小技巧,例如:日期格式的转换、行列转换、存储过程、视图、触发器以及设置数据表结构的一些常见技巧。