网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.实例讲解如何让多进程多线程访问.
.教你轻松解决SQL Server 2000 SP.
.基础知识:带你了解最常见的13个.
.让SQL Server为工作负载高峰提前.
.在SQL中为安装程序填加计数器注册.
.自定义用于ASP Web站点的SQL 7.0.
.SQL Artisan多层查询条件嵌套功能.
.SQL Server 存储过程的经典分页.
.sql2k中新增加的Function的sqlbo.
.MS SQL SERVER2005 XML 最佳实践.
.Sql Server 2000数据库日志日益庞.
.sql server中order by部分使用方.
.SQL Server 2005 创建登录时提示.
.图文讲解如何对SQL Server进行日.
.SQL Server 2005 提供的分页查询.
.删除数据库中重复数据的几个方法.
.解决sqlserver2005中文版与vs200.
.基于SQL SERVER的分页存储过程.
.选择是否恢复整个SQL Server的方.
.SQL Server 2005 Reporting Serv.

讲解数据库中行级转换成列级的实际应用

发表日期:2008-3-12


讲解数据库中行级转换成列级的实际应用:

首先,我们需要建立一个表,详细内容请参考下文:

create table score
(
   Name    varchar(10),
   Subject varchar(10),
   Result int
)
go
 
-- Insert some data to score table
insert into score(Name , Subject , Result) values('Jason' , 'Chinese' , 74)
insert into score(Name , Subject , Result) values('Jason' , 'Math' , 83)
insert into score(Name , Subject , Result) values('Jason' , 'Physic' , 93)
insert into score(Name , Subject , Result) values('Bosco' , 'Chinese' , 74)
insert into score(Name , Subject , Result) values('Bosco' , 'Math' , 84)
insert into score(Name , Subject , Result) values('Bosco' , 'Physic' , 94)
go
 
-- useing PIVOT operator
SELECT * FROM
(    
    select Name,Subject,Result from score
) as X
PIVOT
(    
   Sum(Result) FOR Subject IN ([Chinese],[Math],[Physic])
) AS PVT
 
-- useing static SQL. There only are [Chinese],
[Math],[Physic] values in subject field
select Name,
 sum(case Subject when 'Chinese' then Result else 0 end) as [Chinese],
 sum(case Subject when 'Math' then Result else 0 end) as [Math],
 sum(case Subject when 'Physic' then Result else 0 end) as [Physic]
from score
group by Name
 
-- useing dynamic SQL. There may be some other 
values in subject field,don't limited to [Chinese],[Math],[Physic]
declare @sql varchar(2000)
set @sql = 'select Name'
select @sql = @sql + ', sum(case Subject when 
''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from score) as X
set @sql = @sql + ' from score group by Name'
exec(@sql)
上一篇:在SQL Server2005中用语句创建数据库和表 人气:1108
下一篇:实现一个用户取过的数据不被其他用户取到 人气:1091
浏览全部数据库的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐