当前位置:文档之家› Oracle列转行和行转列的几种用法

Oracle列转行和行转列的几种用法

Oracle列转行和行转列的几种用法
栏到
栏主要讨论sys_connect_by_path的用法
1,具有分层关系
SQL > createtabledept(deptnononumber,deptname varchar2 (20),mgrnononumber);
table created .
SQL >插入deptvalues (1,“总部”,空);
1 row created .
SQL >插入deptvalues (2,’浙江分公司’,1);
1 row created .
SQL > insert into dept values(3,’杭州分公司’,2);已创建
1行。

SQL >提交;
提交完成。

SQL >从部门连接中选择最大值(子串(sys_connect_by_path(deptname,’,’),2))由先前部门连接= mgrno 最大值(SUBSTER(SYS _ CONNECT _ BY _ PATH(DEPTNAME),’),2)
-总部,浙江分行,杭州分行
2,行-列转换
如果一个表的所有列都连接到一行,用逗号分隔:
SQL >选择最大值(SUBSTER(SYS _ CONNECT _ BY _ PATH(column _ name,’,’),2))
MAX(SUBSTRA(SYS _ CONNECT _ BY _ PATH(COLUMN _ NAME,’,’),2))
- DEPTNO,DEPTNAME,MGRNO
3,ListAgg(Oracle 11g)
SQL >选择DEPTNO,
2 ListAgg(NAME,’;’)
3在组
4内(由搪瓷订购)搪瓷
5来自emp
6组由deptno
7由deptno 8 /
DEPTNO搪瓷
- -
10 CLARK。

国王;米勒
20亚当斯;福特。

琼斯;
SCOTT。

史密斯
30艾伦;布莱克;
JAMES;马丁;
TURNER;下面的W ARD
是使用tempas的列转换1
的两种用法(从t_cc_l2_employee 256中选择account_no,user_party_id,data_hierarchy_id+ where account_no不为空)
从temp union中选择account _ no,user _ party _ id全部
选择account _ no,data _ hierarchy _ id从temp 2 256中选择来自t_cc_l2_employee的data_hierarchy_id,其中account_no不为空,user_party_id不为空,data_hierarchy_id不为空)MODEL
RETURE UPDATED ROWS
PARTITION BY(account _ no)DIMENSION BY(0 AS n) MEASURES(‘ xx ‘ AS cn,’ yyyyyy’ AS cv,user_party_id,data _ hierarchy _ id)RULES UPSERT ALL(
cn[1
-注意:模型语法SQL经常遇到两个问题
1 ora-32638:模型维度中的非唯一寻址(问题是模型结果集中对应于分区依据的列具有重复值)
2 ora-25137数据值超出范围(将“yyyyyyyy”中的“yyyyyyy”扩展几个位置可以解决您的问题)
255。

相关主题