Oracle 行列转换公式】的更多相关文章

1.行转列 SELECT STU_NAME,TERM,ZHANBI,COURSE_MARK FROM (SELECT '罗飞' STU_NAME, '2001-2002' TERM, ' 微积分, ' 线性代数, ' 数据结构, ' 操作系统 FROM DUAL) UNPIVOT(COURSE_MARK FOR ZHANBI IN( 微积分, 线性代数, 数据结构)) 详细见:连接…
oracle 行列转换列名如果是数字,用双引号包住  如下: --  建表 create table workinfo(wid integer primary key,sid integer ,CONSTRAINT sid foreign key(sid) references student(sid),city nvarchar2(100),-- 就业城市wage number(10,2),-- 月薪workdate date,-- 就业时间eid integer ,CONSTRAINT ei…
oracle 10g wmsys.wm_concat行列转换函数的使用: 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用   1.把结果按分组用逗号分割,以一行打印出来.(如果需要换其它的可以用replace函数:replace(wm_concat(name),',','|')) select t.u_id,        wmsys.wm_concat(t.goods),      …
/* 在实际使用sql工作中总会碰到将某一列的值放到标题中显示.就是总说的行列转换或者互换. 比如有如下数据: ID NAME KECHENG CHENGJI -- ---------- -------------------- ------- 1 a 语文 80 2 a 数学 70 3 b 语文 40 4 b 数学 100 5 c 语文 90 6 c 数学 92 那末我要求显示的结果是: NAME YUWEN SHUXUE ---------- ---------------------- -…
最近几天一直在弄Oracle-SQL的问题,涉及到了一些平时没有用到的东西,也因此而在这里郁闷了好久.现在问题得到了解决虽说不算完美.但是还是和大家一起分享一下. 行列转换之一:sum(case when.. then.. else.. end) as 语句 这种也可能是我们遇到的第一个行列转换的方法.巧妙的利用汇总和判断语句就可以解决的. 先看一个简单的基础表:如下图 create table STUDENT(  STUNAME      NVARCHAR2(50),  SUBJECTNAME…
一.建表与插入数据 1.1.建表 create table kecheng ( id NUMBER, name ), course ), score NUMBER ); insert into kecheng (id, name, course, score) , ); insert into kecheng (id, name, course, score) , ); insert into kecheng (id, name, course, score) , ); insert into…
原贴地址:http://www.itpub.net/thread-1017026-1-1.html 谢谢原贴大人 最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结, 希望对大家有所帮助,同时有何错疏,恳请大家指出, 我也是在写作过程中学习,算是一起和大家学习吧. 行列转换包括以下六种情况: *列转行 *行转列 *多列转换成字符串 *多行转换成字符串 *字符串转换成多列 *字符串转换成多行 下面分别进行举例介绍. 首先声明一点,有些例子需要如下10g及以后才有的知识…
两种简单的行列转置 1.固定列数的行列转换如student   subject    grade--------- ---------- --------student1  语文       80student1  数学       70student1  英语       60student2  语文       90student2  数学       80student2  英语       100……转换为          语文      数学      英语student1  80 …
一.wm_concat函数 wm_concat能够实现同样的功能,但是有时在11g中使用需要用to_char()进行转换,否则会出现不兼容现象(WMSYS.WM_CONCAT: 依赖WMSYS 用户,不同oracle环境时可能用不了,返回类型为CLOB,可用substr截取长度后to_char转化为字符类型). 测试用表test_org_bak select * from test_org_bak; 1.:行转列(默认逗号隔开) select wm_concat(level_four_name)…
行列转换包括以下六种情况:*列转行*行转列*多列转换成字符串*多行转换成字符串*字符串转换成多列*字符串转换成多行 下面分别进行举例介绍. 首先声明一点,有些例子需要如下10g及以后才有的知识:a.掌握model子句b.正则表达式c.加强的层次查询 讨论的适用范围只包括8i,9i,10g及以后版本.begin: 1.列转行 未列转行之前的效果如下: 列转行的效果如下: sql代码: CREATE TABLE t_col_row(    ID INT,    c1 ),    c2 ),    c…
使用wmsys.wm_concat 实现行合并 在 Oracle  中, 将某一个栏位的多行数据转换成使用逗号风格的一行显示.能够使用函数  wmsys.wm_concat 达成. 这个在上一篇 oracle内置函数 wmsys.wm_concat使用 中也介绍到. 參考这一段 " Case 1: 列转换行. 以一行显示全部员工的名字 select wmsys.wm_concat(NAME) from employee; 结果: user1,user2 " 如今有个问题, 反过来怎样显…
问题: 员工表: A(E_ID,NAME,) 部门表:  B(D_ID,D_NAME) 员工与部门关系:C(ID,E_ID,D_ID) SELECT  A.E_ID,A.NAME ,B.D_NAME FROM A INNER JOIN C ON A.E_ID=C.E_ID INNER JOIN B ON B.D_ID=C.D_ID; 这样查处的记录会出现, 1,张三,研发部 1,张三,市场部 2,李四,销售部 我想查询结果显示成这样: 1,张三,研发部|市场部 2,李四,销售部 3 ... SQ…
select (select name from t_area where id=areaid) 区域, end) 一月, end) 二月, end) 三月, end) 四月, end) 五月, end) 六月, end) 七月, end) 八月, end) 九月, end) 十月, end) 十一月, end) 十二月 ' group by areaid;…
目录结构如下:行转列列转行[一].行转列 1.1.初始测试数据 表结构:TEST_TB_GRADE Sql代码 create table TEST_TB_GRADE (   ID        NUMBER(10) not null,   USER_NAME VARCHAR2(20 CHAR),   COURSE    VARCHAR2(20 CHAR),   SCORE     FLOAT )  初始数据如下图:                       1.2. 如果需要实现如下的查询效果…
一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name)                            --行转列后的列的值value,聚合函数是必须要有的                               for column_name in(value_1,value_2,value_3)     --需要行转列的列及其对应列的属性…
1.两个重要的网址(参考): http://lovejuan1314.iteye.com/blog/413694http://www.cnblogs.com/heekui/archive/2009/07/30/1535516.html 2.reader.HasRows…
一.Oracle行列转置 1.行转列 (1)创建表格.插入测试数据 create table student( id number, name ), course ), score number ) 插入测试数据,如下: (2)方法一:使用wm_concat()函数 select id, name, wm_concat(score) scores from student group by id, name; 结果集如下: (3)方法二:使用decode()函数 select id,name,s…
多行变一列的方法有很多,觉得这个第一眼看懂了当时就用的这个办法. 情况是这样的.以下数据前几列是一样的,需要把VAT_VALUE_CHAR 的值放在同一行上. SELECT * FROM ps_vat_defaults defaults WHERE defaults.vat_driver = 'VAT_ENT_RGSTRN' AND defaults.vat_driver_key1 = 'AMB19' AND defaults.vat_driver_key2 = 'DEU' AND vat_de…
Oracle中wm_concat()函数的使用 wm_concat()函数是oracle行列转换函数,该函数可以把列值以‘,’分割开来,并显示成一行. 1.原数据: 2.把结果分组以‘|’分隔,以一行打印出来 3.over(partition by )的用法 4.over(order by )的用法…
对300万一张表数据,用游标进行循环,不同写法的效率比较 对300万一张表数据,用游标进行循环,不同写法的效率比较   1.显示游标   declare     cursor cur_2 is select a.cust_name from ea_cust.cust_info a;     cust_id varchar2(100);      begin     open cur_2;     loop         fetch cur_2 into cust_id;         exi…
[书评:Oracle查询优化改写]第14章 结尾章 一.1  相关参考文章链接 前13章的链接参考相关连接: [书评:Oracle查询优化改写]第一章 http://blog.itpub.net/26736162/viewspace-1652985/ [书评:Oracle查询优化改写]第二章 http://blog.itpub.net/26736162/viewspace-1654252/ [书评:Oracle查询优化改写]第三章 http://blog.itpub.net/26736162/v…
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用API   一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的映射.key不能重复,一对对的存储方式 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能…
注:本文使用的数据库表为oracle自带scott用户下的emp,dept等表结构. 通过一个例子来说明行列转换: 需求:查询每个部门中各个职位的总工资 按我们最原始的思路可能会这么写:       这种结果虽然也能满足要求,但是极难阅读,我们使用oracle中的decode()函数进行改写: 这样的话就实现了需求要求的功能,其实这就是一种行列转换的方式,这是通过decode()函数实现的,是oracle独有的一个函数,如果使用通用的sql语句,那么该如何实现上面的查询结果呢?当然我们可以通过嵌…
时间 2014-02-25 00:05:38  ITeye-博客 原文  http://53873039oycg.iteye.com/blog/2021445 主题 MySQLOracle数据库 昨天突然在 一篇博客中看到了Mysql也有rollup函数,原博文使用了rollup进行行列统计,原博文链接如下: http://www.cnblogs.com/lhj588/archive/2012/06/15/2550392.html 本博文主要是记录下mysql和oracle使用rollup函数进…
[需求]例如先有数据为 id | name ------+--------- | lottu | xuan | rax | ak | vincent 现在需要转换为 id | names ------+---------------- | lottu|xuan|rax | ak|vincent 反之:oracle,postgresql有如何对待 [列转行] oracle  对oracle:看到这样的需求:立刻想到vm_concat,listagg函数:这样sql就出来了 select id, v…
--217, SQL SERVER SELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009-08-01" , MAX(CASE WHEN Order_Date ='2009-08-02' THEN AR END) "2009-08-02" , MAX(CASE WHEN Order_Date ='2009-08-03' THEN AR END) "2009-0…
遇到这种情况可以判断:行显示字符数不够,可以增加行显示字符数 01.可以当前会话HR@ACE >set line 400; 02.上面的方法其它会话不生效,懒不想每次设置怎么办? Oracle:cd $ORACLE_HOME/sqlplus/admin [oracle@ACE admin]$ pwd/u01/app/oracle/product/11.2.0/dbhome_1/sqlplus/admin[oracle@ACE admin]$ lltotal 20-rw-r--r-- 1 orac…
--查询工资最高的前三名 (分页的感觉)select * from(select * from emp order by sal desc) twhere rownum <=3--查询工资最高的4到6名 (分页-->排序 行号 选择三步)select * from (select t.*,rownum rn from (select * from emp order by sal desc) t) m where m.rn >= 4 and m.rn<=6 select * fro…
1.行转列 SELECT WM_CONCAT(COLUMN_NAME) COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'T_CREATE_TABLE_1' SELECT LISTAGG(COLUMN_NAME,';') WITHIN GROUP(ORDER BY COLUMN_NAME) COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'T_CREATE_TABLE_1' 注:W…
说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外如果想去Oracle官网搞点东西,比啥都难,密码设置强度要求很高,经常记不住,每次都是重置密码再进去,总是要费周折.好在.NET的驱动中,现在已经有纯托管驱动(Oracle.ManagedDataAccess.dll)方便了不少,备受折磨的朋友赶紧去切换吧,很简单,几个命名空间换一个就好了.总算做了…