oracle如何分上下级 oracle 上下级汇总

求Oracle查询上下级关系语句

如果是SQL2005以上则可以用CTE递归写法

创新互联建站云计算的互联网服务提供商,拥有超过13年的服务器租用、郑州服务器托管、云服务器、网页空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、网页空间、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。

use tempdb

go

create table #emp

(eid integer not null,

ename varchar(10) not null,

epid integer null,

)

insert into #emp

select 1,'A',5

union all

select 2,'me',3

union all

select 3,'bos',4

union all

select 4,'boss',null

select * from #emp

;with empcte as

(select epid,(select ename from #emp b where b.eid = a.epid) as name from #emp a where ename = 'me'

union all

select b.epid,(select ename from #emp where eid = b.epid) as name from empcte a join #emp b on a.epid = b.eid

)

select * from empcte where epid is not null

oracle如何创建组合分区

oracle组合分区

由于Interval分区是针对range的,11g-12.1版本,目前只有Interval—*一共3种Interval的复合分区

range-list方法:

partition by range (updatetime)

interval (numtodsinterval(1,'day'))

subpartition by list(PSNCODE)

SUBPARTITION TEMPLATE(

SUBPARTITION REGION_1 values('038716'),

SUBPARTITION REGION_2 values('270719') )

(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd')))

注意:每个分区有2个子分区,分区的子分区需要手动添加

Interval分区目前测试,只支持range先分区的方式

range-hash方法:每个分区10个子hash分区(可以指定每个子分区到单独的表空间)

partition by range (updatetime)

interval(numtodsinterval(1,'day'))

subpartition by hash(PSNCODE)

SUBPARTITION template

( SUBPARTITION p1 TABLESPACE ts1

, SUBPARTITION p2 TABLESPACE ts2

, SUBPARTITION p3 TABLESPACE ts3

, SUBPARTITION P4 TABLESPACE ts4

)

(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd')))

注意:这种方式可以实现完全自动的分区,非常适合自增长特性的10位数以上的大表

hash分区最好是2的次方个,不然数据会分布不均

range-range方法:子分区需要手动添加,这种分区需要一般比较少见

PARTITION BY RANGE (time_id)

INTERVAL (NUMTODSINTERVAL(1,'DAY'))

SUBPARTITION BY RANGE(amount_sold)

SUBPARTITION TEMPLATE

( SUBPARTITION p_low VALUES LESS THAN (1000)

, SUBPARTITION p_medium VALUES LESS THAN (4000)

, SUBPARTITION p_high VALUES LESS THAN (8000)

, SUBPARTITION p_ultimate VALUES LESS THAN (maxvalue)

)

(PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy')) )

oracle 将下级数据汇总到上级,这个容易实现,现在问题是在一张表中,还有日期,要求不同日期分别汇总~

按日汇总:

select trunc(datcol),其他列,sum(数量)

from tabname

group by trunc(datcol),其他列

如何区分Oracle的数据库,实例,服务名,SID

实例

实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以操作数据库;实例 就是治理相关库的内存结构的名字(由SGA、PGA、服务器进程、用户进程、后台进程等组成)

数据库

数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。数据库 就是实际的磁盘上的文件(数据文件、日志文件、控制文件等),负责保存数据,但由对应的实例来操作它的数据

3.服务名

服务名 就是对外公布的名称,为网络监听服务

4.SID

sid用于实例区分各个数据库,service name用于外部链接。


网页名称:oracle如何分上下级 oracle 上下级汇总
本文地址:http://pwwzsj.com/article/hgchgh.html