首页 > 数据库 >Oracle查询多种数据结构并计算合计值

Oracle查询多种数据结构并计算合计值

时间:2024-01-11 11:11:33浏览次数:35  
标签:null NAME ZHDM TREETEST 查询 CODE PF Oracle 数据结构

数据情况:

 

 

 

一、造数、建表结构

 

-- auto-generated definition
create table TREETEST
(
    BIZ_DATE         VARCHAR2(8),
    C_ZHDM           VARCHAR2(50),
    PF_NAME          VARCHAR2(100),
    SYMBOL_CODE      VARCHAR2(50),
    CYZC_ID          VARCHAR2(50),
    SEC_CODE_NAME    VARCHAR2(100),
    C_SFZDC          VARCHAR2(8),
    N_CZSL           NUMBER(18, 4),
    N_CZFE           NUMBER(18, 4),
    N_XCCPDWJZ       NUMBER(20, 12),
    PF_SHARE         NUMBER(19, 2),
    AT_TOT_MV        NUMBER(19, 4),
    LIABILITY_TOT_MV NUMBER(19, 4),
    D_CJRQ           VARCHAR2(8),
    C_SCCPDM         VARCHAR2(50)
)
/

comment on table TREETEST is '树Test'
/

comment on column TREETEST.BIZ_DATE is '数据日期 '
/

comment on column TREETEST.C_ZHDM is '产品备案代码(含本层和穿透层)'
/

comment on column TREETEST.PF_NAME is '产品备案名称(含本层和穿透层)'
/

comment on column TREETEST.SYMBOL_CODE is '本层持有证券代码 '
/

comment on column TREETEST.CYZC_ID is '下穿产品备案代码 '
/

comment on column TREETEST.SEC_CODE_NAME is '下穿产品备案名称 '
/

comment on column TREETEST.C_SFZDC is '穿透后是否为最底层 '
/

comment on column TREETEST.N_CZSL is '本层持有数量 '
/

comment on column TREETEST.N_CZFE is '本层持有市值 '
/

comment on column TREETEST.N_XCCPDWJZ is '下穿产品单位净值 '
/

comment on column TREETEST.PF_SHARE is '下穿产品实收资本 '
/

comment on column TREETEST.AT_TOT_MV is '下穿产品总资产 '
/

comment on column TREETEST.LIABILITY_TOT_MV is '下穿产品总负债 '
/

comment on column TREETEST.D_CJRQ is '采集日期 '
/

comment on column TREETEST.C_SCCPDM is '首层产品代码 '
/


INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'a', 'a名', 'e证券代码', 'f', 'e名', 'Y', null, null, null, null, null, null, null, 'a');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'A', 'A名', 'B证券代码', 'B', 'B名', 'N', null, null, null, null, null, null, null, 'A');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'B', 'B名', 'C证券代码', 'C', 'C名', 'Y', null, null, null, null, null, null, null, 'A');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'D', 'D名', 'E证券代码', 'E', 'E名', 'Y', null, null, null, null, null, null, null, 'D');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'a', 'a名', 'b证券代码', 'b', 'b名', 'N', null, null, null, null, null, null, null, 'a');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'b', 'b名', 'c证券代码', 'c', 'c名', 'N', null, null, null, null, null, null, null, 'a');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'c', 'c名', 'd证券代码', 'd', 'd名', 'Y', null, null, null, null, null, null, null, 'a');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'a', 'a名', 'e证券代码', 'e', 'e名', 'Y', null, null, null, null, null, null, null, 'a');
INSERT INTO TREETEST (BIZ_DATE, C_ZHDM, PF_NAME, SYMBOL_CODE, CYZC_ID, SEC_CODE_NAME, C_SFZDC, N_CZSL, N_CZFE, N_XCCPDWJZ, PF_SHARE, AT_TOT_MV, LIABILITY_TOT_MV, D_CJRQ, C_SCCPDM) VALUES ('20230930', 'c', 'c名', 'm证券代码', 'm', 'm名', 'Y', null, null, null, null, null, null, null, 'a');

-- auto-generated definition
create table TTT
(
C_ZHDM VARCHAR2(20),
N_CYSL NUMBER(18, 2),
N_ZFE NUMBER(18, 2)
);


INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('B', 11.00, 110.00);
INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('C', 12.00, 120.00);
INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('E', 13.00, 130.00);
INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('a', 14.00, 140.00);
INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('b', 15.00, 150.00);
INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('c', 16.00, 160.00);
INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('d', 16.00, 160.00);
INSERT INTO TTT (C_ZHDM, N_CYSL, N_ZFE) VALUES ('f', 17.00, 170.00);

 

二、分成查树状图

-- 比较标准的SQL
select a.BIZ_DATE AS BIZ_DATE
     , 'tree' || b.rn  as tree
     , a.C_ZHDM AS C_ZHDM
     , lpad(' ', LEVEL * 2) || PF_NAME       AS PF_NAME
     , LEVEL AS                              levels
     , a.CYZC_ID AS CYZC_ID
     , LTRIM(sys_connect_by_path(a.rn,'-'),'-') as cc
     ,t2.N_CYSL
     , t2.N_ZFE
     ,'(' || LTRIM(SYS_CONNECT_BY_PATH('(' || to_char(NVL(t2.N_CYSL,0)) || '/' || to_char(NVL(t2.N_ZFE,1)) || ')', '*'), '*') || ')*' ||  to_char(NVL(t2.N_ZFE,1)) as str00,
    DBMS_AW.eval_number('(' || LTRIM(SYS_CONNECT_BY_PATH('(' || to_char(NVL(t2.N_CYSL,0)) || '/' || to_char(NVL(t2.N_ZFE,1)) || ')', '*'), '*') || ')*' ||  to_char(NVL(t2.N_ZFE,1))) as sum
from
    (select aa.*,row_number() over (partition by C_ZHDM,C_SCCPDM, LEVEL order by C_ZHDM) as rn from treeTest aa) a
    JOIN (select C_SCCPDM, ROWNUM as rn from (select distinct C_SCCPDM from treeTest order by C_SCCPDM)) b
      ON a.C_SCCPDM = b.C_SCCPDM
    LEFT JOIN ttt t2
      ON a.CYZC_ID = t2.C_ZHDM
start with a.C_ZHDM in (a.C_SCCPDM)
CONNECT BY NOCYCLE a.C_ZHDM = prior a.CYZC_ID
order by tree,CYZC_ID;

查询结果:

 

标签:null,NAME,ZHDM,TREETEST,查询,CODE,PF,Oracle,数据结构
From: https://www.cnblogs.com/karrya/p/17958118

相关文章

  • DOTS Unity.Physics物理引擎碰撞查询核心分析
    最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞查询以及核心相关概念。Unity.Physics碰撞查询概述 碰撞查询(CollisonQurey)是Unity.Physics物理引擎中的一个很重要的功能。很多游戏逻辑都需要基于碰......
  • 数据库内核那些事|PolarDB查询优化:好好的谓词,为什么要做下推?
    导读 数据库的查询优化器是整个系统的"大脑",一条SQL语句执行是否高效在不同的优化决策下可能会产生几个数量级的性能差异,因此优化器也是数据库系统中最为核心的组件和竞争力之一。阿里云瑶池旗下的云原生数据库PolarDBMySQL版作为领先的云原生数据库,希望能够应对广泛用户场景......
  • Cannot load driver class: oracle.jdbc.OracleDriver
    错误信息Causedby:java.lang.IllegalStateException:Cannotloaddriverclass:oracle.jdbc.OracleDriver atorg.springframework.util.Assert.state(Assert.java:97)~[spring-core-5.2.9.RELEASE.jar:5.2.9.RELEASE] atorg.springframework.boot.autoconfigure.jdbc.Da......
  • DM7_SQL语言使用手册_第 1 章 结构化查询语言 DM_SQL 简介
    第1章结构化查询语言DM_SQL简介结构化查询语言SQL(StructuredQueryLanguage)是在1974年提出的一种关系数据库语言。由于SQL语言接近英语的语句结构,方便简洁、使用灵活、功能强大,倍受用户及计算机工业界的欢迎,被众多计算机公司和数据库厂商所采用,经各公司的不断修改......
  • 数据结构之【栈】
    栈和队列是线性表的两个经典特例,它们都是操作受限的线性表,即操作位置需要满足各自的条件,因为这些条件的特殊性,使得实现各自的操作时过程简捷,效率更高。这两个数据结构的应用也非常广泛。栈自助餐厅里的一摞盘子就是常见的栈的例子。在栈中,只能在栈顶位置添加或删除数据项。排队是日......
  • 【Oracle】列拆行/对多行数据的单行数据进行分割并多行显示
    【Oracle】列拆行/对多行数据的单行数据进行分割并多行显示参考链接:Oracle一行字符串拆分为多行_oracle一行拆分成多行-CSDN博客背景:要对一个表的字段的内容进行分割,分隔符都是指定的原数据:'1','2','3','4''5','6','7','8'新数据(按照逗号分割):'1......
  • Oracle 定时批量删除指定表
    --createorreplaceprocedurePF_ETL_DropBITempTableasBEGINdeclareCURSORcur_tableisselecttable_namefromall_tableswhereowner='NCOLAP'andTable_Namelike'BI_%';row_tablecur_table%ROWTYPE;s_sqlvarchar2(2000);BEGI......
  • 蓝凌OA 人事档案数据结构
    模块:人事档案薪酬福利表名称:hr_staff_emolument_welfare对象名称:com.landray.kmss.hr.staff.model.HrStaffEmolumentWelfare列名描述非空长度类型fd_idIDtrue Stringfd_payroll_name工资账户名true50Stringfd_payroll_bank工资银行false100......
  • docker安装oracle并修改服务名修改字符集
    拉取镜像dockerpullregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 创建容器dockerrun-d-p1521:1521--nameoracle11gregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g  查看容易dockerps-a 进入容器dockerexec-itoracle11gbash 切......
  • Oracle-概要文件dba_profiles(资源配置)
    DBA_PROFILES用来显示所有配置文件及其限制。在11g数据库环境中,dba_profiles的结构只有4个字段,分别是PROFILE\RESOURCE_NAME\RESOURCE_TYPE\LIMIT;在12c及以上的Oracle数据库中,新增了COMMON\INHERITED\IMPLICIT。1.通过select语句查看所有配置及限制。select*fromdba_profil......