易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle 行转列的通用过程

 原文传送门:http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html?24122
经常遇到发帖求行列转换的代码,用max(decode(..))回复后,十有八九会再问一句:如果列名不固定,或者列数不固定怎么办。就要用存储过程来写,这些存储过程的代码都大同小异,我就想能不能写个通用点的过程
试了一下,把结果发出来
SQL code
create or replace procedure proc(tabname in varchar2,
col1 in varchar2,
col2 in varchar2,
col3 in varchar2,
viewname in varchar2 default 'v_tmp')
as
sqlstr varchar2(2000):='create or replace view '||viewname||' as select '||col1||' ';
c1 sys_refcursor;
v1 varchar2(100);
begin
open c1 for 'select distinct to_char('||col2||') from '||tabname;
loop
fetch c1 into v1;
exit when c1%notfound;
sqlstr:=sqlstr||'
,max(decode('||col2||','''||v1||''','||col3||'))"'||v1||'"';
end loop;
close c1;
sqlstr:=sqlstr||' from '||tabname||' group by '||col1;
execute immediate sqlstr;
end proc;
这里的几个参数,tabname指的是需要进行行列转换的表名,col1是这个表中行列转换以后要根据哪一列进行分组,那一列的列名。col2传入的是要将行转成列的那一列的列名,col3表示需要进行统计的数据列的列名
viewname传入希望建立的视图的名称,可以不填,默认为v_tmp
这么说很难让人明白..举个例子,引用一个帖子的数据
create table tab (
counter varchar(20),        -- 参加考试人数
subject varchar(20),        -- 科目
class varchar(20)          -- 班级
)
表数据:
counter  subject  class
36        英语      一班     
44        英语      二班
44        数学      二班
33        语文      一班
39        语文      三班
转换后:


相关文档:

ORACLE JOB间隔时间参考

 
关键字: oracle job 间隔时间 trunc
假设你的存储过程名为PROC_RAIN_JM
再写一个存储过程名为PROC_JOB_RAIN_JM
内容是:
Create Or Replace Procedure PROC_JOB_RAIN_JM   Is   li_jobno         Number;  &nb ......

Install Oracle 10g for Solaris

 一、首先下载
1。到Oracle的OTN站点上下载Oracle10g for Solaris x86的安装盘 http://www.oracle.com/technology ... ocs/solx86soft.html 2。下载完毕以后,得到solarisx86_DB_10_1_0_3_Disk1.cpio.gz文件 解压,生成Disk1目录 $ gunzip -c solarisx86_DB_10_1_0_3_Disk1.cpio.gz | cpio -idmv 然后看oracle 10g fo ......

ORACLE 中的DECODE函数

      昨天面试被问到了分段统计,我知道decode可以,面试官接着要我说decode的语法,没回答上来.从网上找的资料稍微改了一下.
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。
     &nb ......

oracle 字符集问题

1.oracle字符集问题:
数据库字符集为ZHS16BGK,汉字在数据库存放的时候占用两个字节
数据库字符集为UTF8,汉字在数据库里存放的时候占用三个字节
由于字符集不同,导致现在数据库IMP的时候有些表的字段长度不够,出现ORA-12899: value too large for column的错误。
通过修改字符集可以解决这种问题。
2.utf-8和unico ......

ORACLE由脚本到创建数据库完整过程。

(1)以SYS身份登陆
conn sys/sysem_pwd as sysdba;
(2)创建amly用户
create user amly identified by 9imly;
(3)创建表空间
create tablespace ts_amly datafile 'd:\amlyfile\test.dbf' size 100M;
(4)将表空间分配给用户
alter user amly default tablespace ts_amly;
(5)给用户授权
grant create sess ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号