SqlServer2000下实现行列转换

SqlServer2000下实现行列转换

2011-04-06 22:07:07|  分类: SQL Server |  标签:sqlserver  2000  行列转换  sql  |举报|字号 订阅

create table tb(姓名 nvarchar(50),课程 nvarchar(50),分数 int)

insert into tb values(‘张三‘ , ‘语文‘ , 74)
insert into tb values(‘张三‘ , ‘数学‘ , 83)
insert into tb values(‘张三‘ , ‘物理‘ , 93)
insert into tb values(‘李四‘ , ‘语文‘ , 74)
insert into tb values(‘李四‘ , ‘数学‘ , 84)
insert into tb values(‘李四‘ , ‘物理‘ , 94)
1.静态实现
select 姓名,
          max( case 课程 when ‘语文‘  then  分数  else 0 endas 语文,
          max( case 课程 when ‘数学‘  then  分数  else 0 end) as 数学,
          max( case 课程 when ‘物理‘  then  分数  else 0 endas 物理
from tb group by 姓名
2.动态实现
declare @sql nvarchar(500)
set @sql=‘select 姓名‘

select @[email protected]+‘,max(case 课程 when ‘‘‘+课程+‘‘‘ then 分数 else 0 end )  ‘+课程+‘‘   --这句话不太理解 
from (select distinct 课程 from tb) as a

set @[email protected]+‘ from tb group by 姓名‘
exec(@sql)

转:http://de.cel.blog.163.com/blog/static/514512362011369514863/

阅读(459)| 评论(0

时间: 2024-10-09 08:12:56

SqlServer2000下实现行列转换的相关文章

在Sqlserver下巧用行列转换日期的数据统计

在Sqlserver下巧用行列转换日期的数据统计 前言 在SQLSERVER 中有很多统计函数的基础语法,有使用Group By 或 partition by 后配合Sum,Count(*) 等用法.常应用于统计网站的PV流量.合同项目中月收入等业务场景中.在文中我分享下最近做过的统计小案例,和大家互相学习下:) 背景 合同中行项目按月收入的统计 1.业务逻辑及需求  1.1 表业务逻辑 合同是公司间互相签署的法律契约,一份合同从诞生起,就开始流转于公司的各个部门,最核心的还是盈亏的数值.盈亏是

简单的叙述下SQL中行列转换的小知识!

行列转换对于工作还是学习中总是不可避免的会遇到(虽然本人还尚未工作,萌萌哒的学生一枚),解决的方法也有很多,我这里就总结一下我所想解决的问题以及怎么去解决的方法, 可能网上已经有很多类似的方法了,有的比我的可能会更好,就当我记录一下自己的学习经历吧.这里我们列举一个关于股票的每日入账出账做一个统计然后整理数据,虽然例子可能不太合理, 但是不要太执着于这些细节,能说明问题就好,傻笑ing..... 1 列转行:按照某一列分组,将另一列作为行时列名可数,不变. 什么意思呢?话说多了反而不懂,放两张图

SQL行列转换6种方法

在进行报表开发时,很多时候会遇到行列转换操作,很对开发人员针对于SQL级别行列转换操作一直不甚理解,今天正好抽空对其进行了一些简单的总结.这里主要列举3种可以实现SQL行列转换的方法,包括通用SQL解法以及Oracle支持解法. 一.测试数据 测试表依旧采用Oracle经典的scott模式下的dept表和emp表,结构如下: DEPT: create table DEPT ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(

Mysql实现行列转换

前言: 最近又玩起了sql语句,想着想着便给自己出了一道题目:“行列转换”.起初瞎折腾了不少时间也上网参考了一些博文,不过大多数是采用oracle数据库当中的一些便捷函数进行处理,比如”pivot”.那么,在Mysql环境下如何处理? 自己举了个小例子: sql代码实现: 1 -- Step1:建表并插入数据 2 3 -- Step2:中间转换,即“二维转一维”得到一维表. 4 5 -- Step3:利用IF判断并“group by”即可得到目标结果表. 6 7 8 9 -- 加载 10 11

锋利的SQL-SQL Server的表旋转(行列转换)

所谓表旋转,就是将表的行转换为列,或是将表的列转换为行,这是从SQL Server 2005开始提供的新技术.因此,如果希望使用此功能,需要将数据库的兼容级别设置为90.表旋转在某些方面也是解决了表的数据存储和实际需要之间的矛盾.例如,图9-4所示的是一个典型的产品销售统计表,这种格式虽然便于阅读,但是在进行数据表存储的时候却并不容易管理,产品销售数据表通常需要设计成图9-5所示的结构.这样就带来一个问题,用户既希望数据容易管理,又希望能够生成一种能够容易阅读的表格数据,这时候就可以使用表旋转技

【峰回路转】Excel技巧百例 11.数据透视表的简单使用-行列转换

Excel的数据透视表不仅可以进行分类汇总,而且可以轻松快捷的进行行列转换 例如: 按照上篇文章中的方法我们可以插入数据透视表,将姓名放到行中,将课程放到列中,将分数放到值中: 从上面的结果中,我们可以清晰的看到有人缺考了英语 如果只显示姓名有重名的怎么办?是否可以把学号也显示出来呢?我们下一篇将介绍如何既显示学号,又显示姓名. 版权声明:本文为博主原创文章,未经博主允许不得转载.

数据库的行列转换问题

在平常的工作中或者面试中,我们可能有遇到过数据库的行列转换问题.今天我们就来讨论下. 1.创建表 首先我们来创建一张表. sql语句: --1. 创建数据表 if OBJECT_ID('Score') is not null drop table Score create table Score ( 姓名 nvarchar(128), 课程 nvarchar(128), 分数 int ) insert into Score values('张三','语文',98) insert into Sco

SQL SERVER 中的行列转换小结

1. 介绍说明 前段时间组内的小伙伴在升级维护项目中,经常设计一些复杂的数据转换问题,让我去看下有些地方怎么处理,我发现好多都是涉及到行列转换的问题,处理起来经常会比较麻烦,借此也总结一下,方便以后的查阅使用.该总结参照了网上的一些资料,也做了一些变动,如有更好的方法也欢迎指出. 演示的脚本见 3.测试数据脚本 2. 例子演示 2.1 实现行转列 (1) Case WHEN 实现行转列 /*-----1.1 Case WHEN 实现行转列----------*/ --(1)静态SQL SELEC

oracle高级SQL(四)--SQL行列转换专题2

[上一专题]  行列转换1  -- PIVOT与UNPIVOT函数的介绍 实现案例 1001 lufei 1001 shanzhi 1001 namei 1001 qiaoba 实现效果如下: 1001 lufei,shanzhi,namei,qiaoba 典型的行列转换:实现这种方法有很多. 其中oracle11g之后提供了listagg函数;用来实现上面的效果最好不过了:我们来看下listagg语法 listagg函数的语法结构如下: >listagg( [,]) within group