知识大全 Oracle 中使用层次查询方便处理财务报表
Posted 理财
篇首语:夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle 中使用层次查询方便处理财务报表相关的知识,希望对你有一定的参考价值。
Oracle 中使用层次查询方便处理财务报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Oracle 中Connect By 子句对在关系表上表现层次关系提供了方便 使用Connect by 子句需要在表中定义两个字段 一个是父节点字段 一个是节点字段 其中节点字段一般来说是主键 例如我们作一张资产负债表 数据来源 资 产 期末余额 负债及所有者权益 期末余额 流动资产 流动负债 现金 短期存款 存放中央银行款项 财政性存款 存放同业款项 向中央银行借款 短期贷款 同业存放款项 其他流动资产 其他流动负债 长期资产 长期负债 中长期贷款 发行长期债券 减 贷款呆账准备 其他长期负债 固定资产净值 其他长期资产 无形 递延及其它资产 所有者权益 其中 实收资本 资产总计 负债及所有者权益合计 Create table balance_sheet (BS_ID INTEGER BS_PID INTEGER BS_NAME VARCHAR ( ) BS_VALUE NUMBER( ) ); BS_ID 项目代码 BS_PID 项目父代码 BS_Name 项目名称 BS_VALUE 数据列 插入测试数据 insert into balance_sheet values( 流动资产 ); insert into balance_sheet values( 现金 ); insert into balance_sheet values( 存放中央银行款项 ); insert into balance_sheet values( 存放同业款项 ); insert into balance_sheet values( 短期贷款 ); insert into balance_sheet values( 其他流动资产 ); insert into balance_sheet values( 长期资产 ); insert into balance_sheet values( 中长期贷款 ); insert into balance_sheet values( 减 贷款呆账准备 ); insert into balance_sheet values( 固定资产净值 ); insert into balance_sheet values( 其他长期资产 ); insert into balance_sheet values( 无形 递延及其它资产 ); insert into balance_sheet values( 资产总计 ); insert into balance_sheet values( 流动负债 ); insert into balance_sheet values( 短期存款 ); insert into balance_sheet values( 财政性存款 ); insert into balance_sheet values( 向中央银行借款 ); insert into balance_sheet values( 同业存放款项 ); insert into balance_sheet values( 其他流动负债 ); insert into balance_sheet values( 长期负债 ); insert into balance_sheet values( 发行长期债券 null); insert into balance_sheet values( 其他长期负债 ); insert into balance_sheet values( 所有者权益 ); insert into balance_sheet values( 其中 实收资本 ); insert into balance_sheet values( 负债及所有者权益合计 ); mit; 显示全部数据 select bs_name bs_value from balance_sheet connect by prior bs_id = bs_pid start with bs_pid = –可以省略 显示一个节点的数据 select bs_name bs_value from balance_sheet connect by prior bs_id = bs_pid start with bs_pid = 其中connect by 定义父子连接关系 start with 定义开始节点 这个子句可以省略 表示自动将全部节点展开 (流动资产节点数据) 显示层次结构 select (case when level = then ||bs_name when level = then ||bs_name end ) bs_name bs_value from balance_sheet connect by prior bs_id = bs_pid start with bs_pid = 其中引用了level字段 表示层次 它是每张表默认的字段 其他默认的字段还有rownum (根据层次来实现缩进风格) 以下功能 i 及以上版本支持 层次内排序 select (case when level = then ||bs_name when level = then ||bs_name end ) bs_name bs_value from balance_sheet connect by prior bs_id = bs_pid start with bs_id = or bs_id = ORDER SIBLINGS BY bs_value desc 取遍历路径 select ltrim(sys_connect_by_path( BS_Name | ) | ) path (case when level = then ||bs_name when level = then ||bs_name end ) bs_name bs_value from balance_sheet connect by prior bs_id = bs_pid start with bs_pid = 层次计算 这里层次计算是指根据父子节点关系进行汇总 也就是说 父节点 = SUM(子节点) 但是在财务报表父指标 不一定是子指标的叠加 也可能是几个子指标减去另外几个子指标 例如 长期资产 = 中长期贷款 – 贷款呆账准备 +固定资产净值 +其他长期资产 为了实现这种情况 我们建一个字段BS_Dir来表示加减方向 表示 加 表示减 这样 父节点 = SUM(子节点 * Direction) SELECT SUBSTR (PATH INSTR (PATH | ) ) Par_path sum(bs_value * bs_dir) FROM (SELECT BS_ID BS_PID LTRIM (SYS_CONNECT_BY_PATH (bs_name | ) | ) PATH bs_value bs_dir FROM balance_sheet CONNECT BY PRIOR bs_id = bs_pid START WITH bs_pid = ) group by SUBSTR (PATH INSTR (PATH | ) ) 竟然有意外的收获 原表中的数据流动资产是错的!!!也许是我对业务知识了解不够 如果您知道原因 还清指点 数据的最后一行是对所有原表第一层节点的叠加 如果希望得到资产和负债的总计数据 需要对节点顺序进行重新调整 我的想法是建立一个表示汇总关系的逻辑的BS_LID 和 BS_LParID cha138/Article/program/Oracle/201311/18351相关参考
ORACLE提供了一种树形结构用来实现层次查询 STARTWITH指定查询的根行 CONNECTBY指定父行和子行的关系 PRIOR引用父行 为测试方便使用如下Demo 建立数据库表Tr
Oracle层次查询和with函数的使用示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 开发
知识大全 做销售的想做一个简单进出账销售额盈利及库存的简单报表、有什么合适的财务软体推荐下
做销售的想做一个简单进出账销售额盈利及库存的简单报表、有什么合适的财务软体推荐下?天商财运通喽。]核心功能:采购管理·多种方便灵活的进货方式,实现货物快速周转,减少库存积压·采购退货业务的处理,·对未
()选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名FROM子句中写在最后的表(基础表drivingtable)将被最先处理在F
财务报表中的三表,具体是哪三个报表?知道的麻烦回答一下。谢了。一般企业对外报表的三个报表是:损益表、资产负债表、企业所得税报表(季度报表),企业内部的报表不含企业所得税表,而是现金流量表。谁知道财务报
“十三五”期间,为解决企业编制财务报告中的问题,全面规范财务报表列报,财政部先后修订印发了一系列财务报表格式,其中不包含( )。
会计改革与发展十四五规划题目:“十三五”期间,为解决企业编制财务报告中的问题,全面规范财务报表列报,财政部先后修订印发了一系列财务报表格式,其中不包含()。A、中小企业财务报表格式B、合并财务报表格式
知识大全 EXCEL账务处理系统(录入记账凭证自动成生财务报表和登记账薄且具备出具
求助用EXCEL做账的全套电子表格!EXCEL账务处理系统(录入记账凭证自动成生财务报表和登记账薄且具备出具 以下文字资料是由(全榜网网www.cha138.com)小
如何从企业财务报表分析中发现问题财务报表主要有资产负债表(反映企业一定日期所拥有的资产、需偿还的债务,以及投资者所拥有的净资产的情况);利润表(反映企业一定时期内的经营成果,及利润或亏损的情况,表明企
怎样看懂企业财务报表?怎么看懂财务报表:在企业众多的财务报表中,对外公布的报表主要是资产负债表、利润及利润分配表、财务状况变动表。这三张表有不同的作用。简单地说,资产负债表反映了某一时期企业报告日的财
怎么看股票的财务报表?财务报表反映了过去的经营成果,一般要看的最主要的财务指标就是企业的盈利水平,主要指标有主营业务增长率(可以预计未来的市场份额)和净资产收益率在企业众多的财务报表中,对外公布的报表