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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

相关文档
最新文档