- 浏览: 1076898 次
- 性别:
- 来自: 南京
-
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
两种简单的行列转置:
1、固定列数的行列转换
如
student subject grade
--------- ---------- --------
student1 语文 80
student1 数学 70
student1 英语 60
student2 语文 90
student2 数学 80
student2 英语 100
……
转换为
语文 数学 英语
student1 80 70 60
student2 90 80 100
语句如下:
2、不定列行列转换
如
c1 c2
--- -----------
1 我
1 是
1 谁
2 知
2 道
3 不
……
转换为
1 我是谁
2 知道
3 不
这一类型的转换必须借助于PL/SQL来完成,这里给一个例子
本文来自CSDN博客,转载请标明出处:
如何用SQL实现一个结果集的行列转置?
以此为准:
with tt as (select 1 a , 2 b , 3 c from dual
union all
select 2 a , 2 b , 4 c from dual
union all
select 4 a , 3 b , 3 c from dual
union all
select 3 a , 1 b , 6 c from dual
union all
select 4 a , 3 b , 1 c from dual
union all
select 6 a , 5 b , 9 c from dual)
谢谢!!
能说明白一点吗?
select 1 a , 2 b , 3 c from dual
union all
select 2 a , 2 b , 4 c from dual
union all
select 4 a , 3 b , 3 c from dual
union all
select 3 a , 1 b , 6 c from dual
union all
select 4 a , 3 b , 1 c from dual
union all
select 6 a , 5 b , 9 c from dual
结果为:
A B C
1 2 3
2 2 4
4 3 3
3 1 6
4 3 1
6 5 9
给这个变成什么样?
可以这样!!!!!1
先建立个表
create table TWB06
(
A VARCHAR2(10),
B VARCHAR2(10),
C VARCHAR2(20)
)
插入数据
A B C
1 2 3
2 2 4
4 3 3
3 1 6
4 3 1
6 5 9
然后这样,就行了
SELECT * FROM (SELECT * FROM (SELECT A A1,LEAD(A,1) OVER (ORDER BY ROWNUM) A2,
LEAD(A,2) OVER (ORDER BY ROWNUM) A3,
LEAD(A,3) OVER (ORDER BY ROWNUM) A4,
LEAD(A,4) OVER (ORDER BY ROWNUM) A5,
LEAD(A,5) OVER (ORDER BY ROWNUM) A6
FROM twb06) )
WHERE ROWNUM=1 UNION
SELECT * FROM (SELECT * FROM (SELECT B A1,LEAD(B,1) OVER (ORDER BY ROWNUM) A2,
LEAD(B,2) OVER (ORDER BY ROWNUM) A3,
LEAD(B,3) OVER (ORDER BY ROWNUM) A4,
LEAD(B,4) OVER (ORDER BY ROWNUM) A5,
LEAD(B,5) OVER (ORDER BY ROWNUM) A6
FROM twb06) )
WHERE ROWNUM=1
UNION
SELECT * FROM (SELECT * FROM (SELECT C A1,LEAD(C,1) OVER (ORDER BY ROWNUM) A2,
LEAD(C,2) OVER (ORDER BY ROWNUM) A3,
LEAD(C,3) OVER (ORDER BY ROWNUM) A4,
LEAD(C,4) OVER (ORDER BY ROWNUM) A5,
LEAD(C,5) OVER (ORDER BY ROWNUM) A6
FROM twb06) )
WHERE ROWNUM=1
刚才写多了,这样就行
SELECT * FROM (SELECT A A1,LEAD(A,1) OVER (ORDER BY ROWNUM) A2,
LEAD(A,2) OVER (ORDER BY ROWNUM) A3,
LEAD(A,3) OVER (ORDER BY ROWNUM) A4,
LEAD(A,4) OVER (ORDER BY ROWNUM) A5,
LEAD(A,5) OVER (ORDER BY ROWNUM) A6
FROM twb06)
WHERE ROWNUM=1 union SELECT * FROM (SELECT B A1,LEAD(B,1) OVER (ORDER BY ROWNUM) A2,
LEAD(B,2) OVER (ORDER BY ROWNUM) A3,
LEAD(B,3) OVER (ORDER BY ROWNUM) A4,
LEAD(B,4) OVER (ORDER BY ROWNUM) A5,
LEAD(B,5) OVER (ORDER BY ROWNUM) A6
FROM twb06)
WHERE ROWNUM=1
union
SELECT * FROM (SELECT C A1,LEAD(C,1) OVER (ORDER BY ROWNUM) A2,
LEAD(C,2) OVER (ORDER BY ROWNUM) A3,
LEAD(C,3) OVER (ORDER BY ROWNUM) A4,
LEAD(C,4) OVER (ORDER BY ROWNUM) A5,
LEAD(C,5) OVER (ORDER BY ROWNUM) A6
FROM twb06)
WHERE ROWNUM=1
http://blog.csdn.net/hynet/archive/2007/03/22/1537380.aspx
1、固定列数的行列转换
如
student subject grade
--------- ---------- --------
student1 语文 80
student1 数学 70
student1 英语 60
student2 语文 90
student2 数学 80
student2 英语 100
……
转换为
语文 数学 英语
student1 80 70 60
student2 90 80 100
语句如下:
select student, sum(decode(subject,'语文', grade,null)) "语文", sum(decode(subject,'数学', grade,null)) "数学", sum(decode(subject,'英语', grade,null)) "英语" from table group by student;
2、不定列行列转换
如
c1 c2
--- -----------
1 我
1 是
1 谁
2 知
2 道
3 不
……
转换为
1 我是谁
2 知道
3 不
这一类型的转换必须借助于PL/SQL来完成,这里给一个例子
CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER) RETURN VARCHAR2 IS Col_c2 VARCHAR2(4000); BEGIN FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP Col_c2 := Col_c2||cur.c2; END LOOP; Col_c2 := rtrim(Col_c2,1); RETURN Col_c2; END; / SQL> select distinct c1 ,get_c2(c1) cc2 from table;
本文来自CSDN博客,转载请标明出处:
如何用SQL实现一个结果集的行列转置?
以此为准:
with tt as (select 1 a , 2 b , 3 c from dual
union all
select 2 a , 2 b , 4 c from dual
union all
select 4 a , 3 b , 3 c from dual
union all
select 3 a , 1 b , 6 c from dual
union all
select 4 a , 3 b , 1 c from dual
union all
select 6 a , 5 b , 9 c from dual)
谢谢!!
能说明白一点吗?
select 1 a , 2 b , 3 c from dual
union all
select 2 a , 2 b , 4 c from dual
union all
select 4 a , 3 b , 3 c from dual
union all
select 3 a , 1 b , 6 c from dual
union all
select 4 a , 3 b , 1 c from dual
union all
select 6 a , 5 b , 9 c from dual
结果为:
A B C
1 2 3
2 2 4
4 3 3
3 1 6
4 3 1
6 5 9
给这个变成什么样?
可以这样!!!!!1
先建立个表
create table TWB06
(
A VARCHAR2(10),
B VARCHAR2(10),
C VARCHAR2(20)
)
插入数据
A B C
1 2 3
2 2 4
4 3 3
3 1 6
4 3 1
6 5 9
然后这样,就行了
SELECT * FROM (SELECT * FROM (SELECT A A1,LEAD(A,1) OVER (ORDER BY ROWNUM) A2,
LEAD(A,2) OVER (ORDER BY ROWNUM) A3,
LEAD(A,3) OVER (ORDER BY ROWNUM) A4,
LEAD(A,4) OVER (ORDER BY ROWNUM) A5,
LEAD(A,5) OVER (ORDER BY ROWNUM) A6
FROM twb06) )
WHERE ROWNUM=1 UNION
SELECT * FROM (SELECT * FROM (SELECT B A1,LEAD(B,1) OVER (ORDER BY ROWNUM) A2,
LEAD(B,2) OVER (ORDER BY ROWNUM) A3,
LEAD(B,3) OVER (ORDER BY ROWNUM) A4,
LEAD(B,4) OVER (ORDER BY ROWNUM) A5,
LEAD(B,5) OVER (ORDER BY ROWNUM) A6
FROM twb06) )
WHERE ROWNUM=1
UNION
SELECT * FROM (SELECT * FROM (SELECT C A1,LEAD(C,1) OVER (ORDER BY ROWNUM) A2,
LEAD(C,2) OVER (ORDER BY ROWNUM) A3,
LEAD(C,3) OVER (ORDER BY ROWNUM) A4,
LEAD(C,4) OVER (ORDER BY ROWNUM) A5,
LEAD(C,5) OVER (ORDER BY ROWNUM) A6
FROM twb06) )
WHERE ROWNUM=1
刚才写多了,这样就行
SELECT * FROM (SELECT A A1,LEAD(A,1) OVER (ORDER BY ROWNUM) A2,
LEAD(A,2) OVER (ORDER BY ROWNUM) A3,
LEAD(A,3) OVER (ORDER BY ROWNUM) A4,
LEAD(A,4) OVER (ORDER BY ROWNUM) A5,
LEAD(A,5) OVER (ORDER BY ROWNUM) A6
FROM twb06)
WHERE ROWNUM=1 union SELECT * FROM (SELECT B A1,LEAD(B,1) OVER (ORDER BY ROWNUM) A2,
LEAD(B,2) OVER (ORDER BY ROWNUM) A3,
LEAD(B,3) OVER (ORDER BY ROWNUM) A4,
LEAD(B,4) OVER (ORDER BY ROWNUM) A5,
LEAD(B,5) OVER (ORDER BY ROWNUM) A6
FROM twb06)
WHERE ROWNUM=1
union
SELECT * FROM (SELECT C A1,LEAD(C,1) OVER (ORDER BY ROWNUM) A2,
LEAD(C,2) OVER (ORDER BY ROWNUM) A3,
LEAD(C,3) OVER (ORDER BY ROWNUM) A4,
LEAD(C,4) OVER (ORDER BY ROWNUM) A5,
LEAD(C,5) OVER (ORDER BY ROWNUM) A6
FROM twb06)
WHERE ROWNUM=1
http://blog.csdn.net/hynet/archive/2007/03/22/1537380.aspx
发表评论
-
Oracle强制使用索引
2013-01-25 16:48 5426Oracle强制使用索引: select /*+ INDEX ... -
Oracle if exists(...)
2013-01-22 10:52 1353对于Oracle中没有 if exists(...) 的语法, ... -
oracle 赋debug权限
2013-01-15 15:29 4159pl/sql 报错 不能运行debug 时 ora-0131 ... -
Oracle 10g使用游标更新或删除数据
2013-01-04 16:03 1149在定义又表示必须要带 ... -
oracle 的 CONNECT BY 和START WITH
2013-01-04 15:00 1424在SELECT命令中使用CONNECT BY 和START W ... -
树-Oracle用Start with...Connect By子句递归查询
2013-01-04 14:59 1092Start with...Connect By子句递归查询一般 ... -
java.sql.SQLException: ORA-01436: 用户数据中的 CONNECT BY 循环
2013-01-04 14:55 2495SELECT r1.region_id,parent_id ... -
Oracle创建删除用户、角色、表空间、导入导出、...命令总结
2013-01-03 16:24 1333//创建临时表空间 create temporary ta ... -
ResultSet.getMetaData() 的使用
2012-08-12 11:22 2187java.sql.ResultSet.getMetaData( ... -
ORACLE中如何查找特定对象中的文本内容~
2012-04-30 19:37 1311[c-sharp] view plaincopy SQL> ... -
Oracle 下读取表/字段的备注信息
2012-04-30 19:19 1252Oracle 通过COMMENT ON TABLE / C ... -
nls_sort和nlssort 排序功能介绍
2012-04-23 23:20 11262ALTER SESSION SET NLS_SORT=''; ... -
Oracle 递归查询 树查询 start with connect by prior
2012-02-28 09:52 1174网页地址: http://www.iteye.com/topi ... -
java中oracle特殊字符的查询
2011-10-18 14:38 2447escape:指定某字符为特殊字符: 例如指定‘\’ 为特殊字 ... -
Oracle中的 单引号 和 双引号
2011-10-18 09:17 1346双引号的作用是:假如建立对象的时候,对象名、字段名加双引号,则 ... -
pl/sql case or decode
2011-10-16 00:19 1166SELECT CASE 3 WHEN 1 THEN ... -
Oracle存储过程返回游标 [转载]
2012-04-22 22:09 4698有俩种方法: 一种是声明系统游标,一种是声明自定义游标,然后 ... -
oracle索引表函数(集合函数)(下表为字符串的索引表举例红色)(嵌套表/索引表/可变数组举例绿色)
2011-10-12 11:40 0一、EXISTS函数 1、检测 ... -
pl/sql 集合代码 的遍历方式
2011-10-12 10:22 1540-- Created on 2011-10-12 by HUC ... -
浅谈oracle复合数据类型
2012-04-22 22:10 1037--本文档可以直接拷贝运行。 /* oracle复合数 ...
相关推荐
本文将深入解析一个Oracle行列转换的例子,通过详细解释SQL语句的构成及其背后的逻辑,帮助读者理解如何在Oracle中实现行列转换。 ### Oracle行列转换例子解析 #### SQL语句结构分析 给定的SQL语句主要分为几个...
Oracle 行列转换技巧详解 Oracle 行列转换是指将数据库表中的行转换为列或将列转换为行的一种操作。这种操作在实际应用中非常有用,例如在数据报表生成、数据分析和数据挖掘等领域。下面我们将详细介绍 Oracle 行列...
通过下载提供的`Oracle补充内容_行列转换.sql`文件,你可以看到具体的SQL示例和实际操作,这将帮助你更好地理解和掌握Oracle的行列转换技巧。在实践中,理解并熟练运用这些技术,将有助于你更有效地处理和展示数据,...
在Oracle数据库中,行列转换是一项常用且强大的功能,它允许数据在不同的维度上进行转换,以便于数据分析和报告。本文将深入探讨Oracle中实现行列转换的几种方法,包括使用`UNION ALL`、`MODEL`子句以及集合类型(`...
【Oracle 行列转换实例】 在数据库管理中,有时我们需要将数据表的行与列进行转换,以便于数据分析和报表展示。Oracle 提供了一种高效的方法,即使用分析函数来实现这种行列转换。分析函数主要设计用于处理累计计算...
Oracle 行列转换总结 Oracle 行列转换是指在 Oracle 数据库中将行与列之间进行转换的操作。这种转换有六种情况:列转行、行转列、多列转换成字符串、多行转换成字符串、字符串转换成多列、字符串转换成多行。 1. ...
### Oracle 行列转换知识点详解 #### 一、概述 在数据库操作中,行列转换是一项非常实用的功能,尤其是在处理报表数据或需要特定格式输出时。本文档将详细讲解Oracle数据库中的行列转换方法,并通过具体实例来说明...
oracle行列转换示例,查询转换,有创表过程,数据,清晰明了
### Oracle 行列转换知识点详解 #### 一、概述 在数据库操作中,有时需要将数据从行格式转换为列格式或反之亦然,这种需求通常被称为“行列转换”。Oracle 提供了多种方法来实现这样的转换,适用于不同的场景。本文...
在Oracle数据库中,行列转换是一种常见的数据操作需求,主要用于改变数据的展示格式,使得数据能够更好地适应特定的分析或报告需求。本文将详细介绍如何在Oracle中实现行转列(即行列转换的一种)以及列转行的操作,...
行列转换,sys_connect_by_path,row_number等函数的用法
常见的数据库面试关于行转列列转行的操作,方便你的面试,经常考到的
### Oracle 数据库中的行列转换详解 #### 一、引言 在处理复杂的数据查询与展示时,经常会遇到需要将数据库中的行数据转换成列数据的需求,这种操作通常被称为“行列转换”。例如,当我们想要汇总不同部门对各种...
### Oracle中SQL语句行列之间的相互转换 在Oracle数据库中,有时我们需要将表格中的行转换为列或将列转换为行,这种操作被称为行列转换。这种转换对于数据分析、报表制作等场景非常有用。本文将详细介绍Oracle中...
Oracle数据库中的行列转换是数据分析和报表制作中常见的需求,它涉及到将数据表中的一行数据转化为多列,或者相反,将多列数据转化成一行。在Oracle中,我们可以使用多种方法来实现这种转换,比如使用Pivot、Unpivot...
### Oracle SQLServer 行列转换知识点详解 #### 一、SQLServer 行转列方法 在SQLServer中,实现行转列的操作有两种主要方法:一种是利用`CASE...WHEN`语句配合`GROUP BY`聚合函数的方式;另一种是通过`PIVOT`操作...
在Oracle数据库中,数据的行列转换是数据处理过程中的常见操作,尤其在数据分析、报表制作以及数据展示时显得尤为重要。本篇文章将详细讲解Oracle 10g中的行列转换技术,包括如何实现行转列和列转行。 首先,我们要...