- 浏览: 407672 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- 序列号 (1)
- jquery (14)
- Eclipse插件 (3)
- Flex (2)
- Rose (1)
- Myeclipse (3)
- maven (4)
- SpringSecurity (2)
- sproutcore (1)
- Http (2)
- svn (4)
- gwt (3)
- jetty (1)
- freebsd (1)
- java (29)
- Oracle (21)
- windows (1)
- Mybatis3.0 (3)
- Struts2 (6)
- easyui (1)
- JPA (1)
- UML (1)
- dom4j (1)
- design pattern (2)
- JavaScript (8)
- FreeMarker (2)
- SQLServer (1)
- memcached (3)
- urlrewrite (1)
- MonggoDB (1)
- Solr (1)
- Lucene (1)
- SQL (2)
- JODConverter (1)
- xml (2)
- pdf2swf (1)
- flexpaper (1)
- android (2)
- jsp (5)
- mobile (1)
- weblogic (3)
- Tomcat (8)
- xss (1)
- db2 (2)
- webservice (1)
- spring (2)
- Gradle (1)
- linux (4)
- ldap (1)
- 软件工程 (1)
- 开发模型 (1)
- linux系统硬件配置查看方法 (1)
- cas (3)
- mysql (1)
- HAProxy (0)
- html (1)
- Web前端 (1)
最新评论
-
super_zou:
...
世界主要国家地区下拉菜单三级联动1 -
ldl_xz:
http://www.9958.pw/post/wenku 曾 ...
利用pdf2swf将PDF转换成SWF -
superlxw1234:
请教一下楼主,你们是如何解决使用MAgent时候,一台主Mem ...
memcached集群-magent -
头子:
中间那段关于“空隙”的解决方式很赞
HTML固定表头Table -
qiankun:
比较实用,好好学习了一下
Mybatis 在dao中获取分页的总记录数
数据库行列转换
SQLserver 2000 行列转换例子:
1.
学号, 课程号, 分数
sid cid mark
030611 1000 70
030611 1001 80
030611 1002 75
030611 1003 86
030611 1004 70
030612 1000 74
030612 1001 83
030612 1002 75
030612 1003 86
030612 1004 75
030613 1000 75
030613 1001 85
030613 1002 85
030613 1003 86
030613 1004 90
=>转换为下面形式:
sid 1000 1001 1002 1003 1004 总分 平均分 最高分
030611 70 80 75 86 70 381 76 86
030612 74 83 75 86 75 393 78 86
030613 75 85 85 86 90 421 84 90
方法一:
select sid ,
[1000]=sum(case cid when '1000'then mark else null end),
[1001]=sum(case cid when '1001'then mark else null end),
[1002]=sum(case cid when '1002'then mark else null end),
[1003]=sum(case cid when '1003'then mark else null end),
[1004]=sum(case cid when '1004'then mark else null end),
[总分]=sum(case sid when sid then mark else null end),
[平均分]=avg(case sid when sid then mark else null end),
[最高分]=max(case sid when sid then mark else null end)
from sc group by sid;
方法二:
--1)声明一个字符串变量,以供动态拼装
declare @sql varchar(8000)
--2)拼装sql语句
set @sql = 'select sid'
--3)动态获得cid,为每个cid构建一个列 --把所有唯一的科目的名称都列举出来
select @sql=@sql+',['+cid+']=sum(case cid when '''+cid+''' then mark else null end)'from (select distinct cid from sc) as sc1
select @sql=@sql+',[总分]=sum(case sid when sid then mark else null end)'
select @sql=@sql+',[平均分]=avg(case sid when sid then mark else null end)'
select @sql=@sql+',[最高分]=max(case sid when sid then mark else null end)'
select @sql=@sql+'from sc group by sid'--分组
exec (@sql) --执行sql命令
ps:
CASE input_expression WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END
input_expression:是使用简单 CASE 格式时所计算的表达式。
when_expression:使用简单 CASE 格式时 input_expression 所比较的简单表达式。
result_expression:当 input_expression = when_expression 取值为 TRUE,即得到result_expression的值
else_result_expression:当比较运算取值不为 TRUE 时返回的表达式的值,省略else_result_expression时,
前面判断的结果不为TRUE时,默认为NULL
oracle 10g行列转换的例子:
NAME COURSE GRADE
---------- -------------------- ----------
张松 语文 74
张松 数学 83
张松 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
方法一:
select name,
sum(decode(course , '语文' ,grade ,0))"语文",
sum(decode(course , '数学', grade , null))"数学",
sum(decode(course , '物理' , grade , null))"物理",
max(decode(name,name,grade,null))"最高分",
sum(decode(name,name,grade,null))"总分",
avg(decode(name,name,grade,null))"平均分"
from tb group by name;
NAME 语文 数学 物理 最高分 总分 平均分
---------- ---------- ---------- ---------- ---------- ---------- ----------
李四 74 84 94 94 252 84
张松 74 83 93 93 250 83.3333333
- 一道java面试题_行列转换.rar (1.2 KB)
- 下载次数: 3
发表评论
-
解决Oracle 11g在用EXP导出时,空表不能导出
2017-02-09 16:30 372一、问题原因: 1 ... -
ORA-12519: TNS:no appropriate service handler found 解决
2016-12-30 13:20 371# processes、sessions是扩大并发连接数, ... -
ORA-01555: 快照过旧: 回退段号 (名称为 "") 过小ORA-22924: 快照太旧
2016-12-29 12:14 7202APPLIES TO:Oracle Database - En ... -
在Oracle中查询表的大小和表空间的大小
2016-12-29 11:18 507有两种含义的表大小。 ... -
Oracle定义DES加密解密及MD5加密函数示例
2016-12-16 11:22 586(1)DES加密函数 create or replac ... -
自定义字符串截取函数
2016-12-08 14:11 323CREATE OR REPLACE FUNCTION SBU ... -
通过v$sqlarea,v$sql查询最占用资源的查询
2016-03-15 15:47 418-----------------------v$sqlar ... -
Oracle的锁表与解锁
2015-12-11 13:58 1067Oracle的锁表与解锁 SELECT /*+ r ... -
oracle手动锁表
2015-12-11 12:19 793手工锁表: lock table tbl_t1 in ro ... -
oracle字符集设置
2015-03-16 14:40 505一、什么是Oracle字符集 Oracle字符集 ... -
行转列
2015-03-10 15:06 712select t.rank, t.Name from t_m ... -
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
2015-03-09 17:21 1666--- The error occurred in ibat ... -
更改数据库管理员密码
2014-11-05 13:24 1090更改数据库管理员密码; sqlplus /nol ... -
查询Oracle正在执行和执行过的SQL语句
2013-12-16 13:51 639---正在执行的select a.username, a.si ... -
Oracle 密码过期与锁定的设置
2012-09-26 10:28 1365查询默认的profile的密码过期参数的设置 ... -
Window 下 启动Oralce服务命令
2012-09-17 09:28 2786在window 下启动Oracle服务的命令 @ ... -
Oracle job 参数说明
2012-02-17 18:04 1320Job的参数: 一:时间间隔执行(每分钟,每天 ... -
oracle 随机函数
2012-01-14 19:51 978Oracle随机函数—dbms_random ... -
Oracle 随机获取记录
2012-01-14 17:58 11301. Oracle 随机获取10条记录 ... -
Oracle创建用户、表空间、导入导出、...命令
2011-12-05 10:44 873Oracle创建用户、表空间、导入导出、...命令 / ...
相关推荐
行列互换工具毫秒级_V2.2.2行列转换
sql行列转换扩展 明源内部学习资料
oracle行列转换,通过实例来实现表的行列转换
MSSQL行列转换存储过程MSSQL行列转换存储过程
sql server 行列转换.
SQL语句行列转换(附带数据库、表、视图操作) ,不错的文档。
EXCEL 行列转换工具
oracle sql行列转换
行列转换问题,不要积分
行列转换SQL存储过程代码,简单的将行数据转换为列展示
动态 实现 SQL 2008行列转换的pivot
Oracle行列转换,一个挺经典的例子,值得学习和思考……
Sql语句实现表的行列转换,行转列,列转行
通过一条查询语句,进行行列转换。例如 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 ...
在EXCEL中可以方便进行行列转换 例如: 1 a 1 b 2 a 可转化为: 1 a b 2 a 反之亦可以,便于进行统计
java面试题之行列转换 Oracle 和SQLServer两种方式 详细例子以及说明 一条语句实现,绝对看得懂! 方便理解!
行列转换的小工具 可以进行行列互转,非常好用,
ORACLE 行列转换,ORACLE,行列转换