求问关于竖表转换横表的问题 看了一下用decode()可以达到你的要求 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 回复人: bzszp(SongZip) ( ) 信誉:130 看了一下用decode()可以达到你的要求docode可以吗?他们的列都没有定阿不要和我开玩笑阿 实际应用中可以通过程序来实现根据t1的个数动态编写sql语句来实现 一个小例子,纵向表向横向表的转换SQL*PLus> desc emp; 名称 是否为空? 类型 ----------------------------------------- -------- ----------------------- EMPNO NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)SQL*PLus> select job, deptno, count(*) 2 from emp 3 group by job, deptno;JOB DEPTNO COUNT(*)--------- ---------- ----------CLERK 10 2CLERK 20 4CLERK 30 2ANALYST 20 4MANAGER 10 2MANAGER 20 2MANAGER 30 2SALESMAN 30 8PRESIDENT 10 2已选择9行。SQL*PLus> select job, 2 max( decode( deptno, 10, cnt, null ) ) dept_10, 3 max( decode( deptno, 20, cnt, null ) ) dept_20, 4 max( decode( deptno, 30, cnt, null ) ) dept_30, 5 max( decode( deptno, 40, cnt, null ) ) dept_40 6 from ( select job, deptno, count(*) cnt 7 from emp 8 group by job, deptno ) 9 group by job 10 /JOB DEPT_10 DEPT_20 DEPT_30 DEPT_40--------- ---------- ---------- ---------- ----------ANALYST 4CLERK 2 4 2MANAGER 2 2 2PRESIDENT 2SALESMAN 8 回复人: bzszp(SongZip) ( ) 信誉:130 实际应用中可以通过程序来实现根据t1的个数动态编写sql语句来实现 如果要动态生成sql 语法 不如用游标了 kerisyml(魂之利刃) ,你的东东偶也明白,但是如果那些10,20,30,40以及dept_10,dept_20,dept_30,dept_40都是存在一张表中,每次执行的时候记录数都不相同,这样的话,那样写有问题吧?用游标对大数据量的记录数进行统计,是比较费时间和资源的吧。除了用第三方工具来动态生成SQL语句之外还有别的方法么?比如利用decode的嵌套? 在 SQL Server 版里面有针对 SQL Server 的存储过程,你可以去搜索一下 非空字符串连接问题 关于char长度的定义 申明了变量了,但是还是报错必须申明标识符 用oledb能不能连接到安装在sun unix小型机上oracle数据库? Oracle和C#数据类型问题 请问这样一个SQL语句怎么写? 问个触发器的问题 想做一个触发器:发现表中的一个字段被改了,对应将另一个字段也改过来。如何实现? 请问 从 sql/pl中export出来的数据 *.dmp文件 如何在导回到原来的数据库 更改了控制文件后出现的问题 初次使用sql*loader出错,请教!在线等待 临时表的使用问题
看了一下用decode()可以达到你的要求
docode可以吗?他们的列都没有定阿
不要和我开玩笑阿
可以通过程序来实现根据t1的个数
动态编写sql语句来实现
SQL*PLus> desc emp;
名称 是否为空? 类型
----------------------------------------- -------- -----------------------
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)SQL*PLus> select job, deptno, count(*)
2 from emp
3 group by job, deptno;JOB DEPTNO COUNT(*)
--------- ---------- ----------
CLERK 10 2
CLERK 20 4
CLERK 30 2
ANALYST 20 4
MANAGER 10 2
MANAGER 20 2
MANAGER 30 2
SALESMAN 30 8
PRESIDENT 10 2已选择9行。SQL*PLus> select job,
2 max( decode( deptno, 10, cnt, null ) ) dept_10,
3 max( decode( deptno, 20, cnt, null ) ) dept_20,
4 max( decode( deptno, 30, cnt, null ) ) dept_30,
5 max( decode( deptno, 40, cnt, null ) ) dept_40
6 from ( select job, deptno, count(*) cnt
7 from emp
8 group by job, deptno )
9 group by job
10 /JOB DEPT_10 DEPT_20 DEPT_30 DEPT_40
--------- ---------- ---------- ---------- ----------
ANALYST 4
CLERK 2 4 2
MANAGER 2 2 2
PRESIDENT 2
SALESMAN 8
实际应用中
可以通过程序来实现根据t1的个数
动态编写sql语句来实现
如果要动态生成sql 语法 不如用游标了
都不相同,这样的话,那样写有问题吧?
用游标对大数据量的记录数进行统计,是比较费时间和资源的吧。
除了用第三方工具来动态生成SQL语句之外还有别的方法么?
比如利用decode的嵌套?