通过SQL写FSG报表
/*
程序名称:资产负债表
必要:需要修改a的账套ID、本位币种及科目设定;需要修改报表行集ID
RRC系列:展开基于计算的行引用
a:基于账户分配的行金额
A:基于计算的行金额明细
B:基于计算的行金额汇总
本程序在11.5.9及11.5.10测试通过
*/
SELECT AX.AXIS_SEQ,
AX.DESCRIPTION,
DECODE(AX.CHANGE_SIGN_FLAG,'Y',-DECODE(RRA4.AXIS_SET_ID,NULL,B.期初余额,RRA4.期初余额),
DECODE(RRA4.AXIS_SET_ID,NULL,B.期初余额,RRA4.期初余额)) 期初数,
DECODE(AX.CHANGE_SIGN_FLAG,'Y',-DECODE(RRA4.AXIS_SET_ID,NULL,B.期末数,RRA4.期末数),
DECODE(RRA4.AXIS_SET_ID,NULL,B.期末数,RRA4.期末数)) 期末数,
DECODE(AX.CHANGE_SIGN_FLAG,'Y',-DECODE(RRA4.AXIS_SET_ID,NULL,B.上年同期,RRA4.上年同期),
DECODE(RRA4.AXIS_SET_ID,NULL,B.上年同期,RRA4.上年同期)) 上年同期
FROM
(SELECT A.AXIS_SET_ID,
A.AXIS_SEQ,
SUM(DECODE(A.OPERATOR,'-',-A.期初余额,A.期初余额)) 期初余额,
SUM(DECODE(A.OPERATOR,'-',-A.期末数,A.期末数)) 期末数,
SUM(DECODE(A.OPERATOR,'-',-A.上年同期,A.上年同期)) 上年同期
FROM (
SELECT RRC6.AXIS_SET_ID,
RRC6.AXIS_SEQ,
RRC6.CALCULATION_SEQ,
RRC6.OPERATOR,
RRA3.期初余额,
RRA3.期末数,
RRA3.上年同期
FROM (select a.axis_set_id,
a.axis_seq,
SUM(DECODE(a.运算符号,'+',a.期初余额,'-',-a.期初余额,a.期初余额)) 期初余额,
SUM(Decode(a.运算符号,'+',a.期末数,'-',-a.期末数,a.期末数)) 期末数,
SUM(Decode(a.运算符号,'+',a.上年同期累计,'-',-a.上年同期累计,a.上年同期累计)) 上年同期
from
(select gcc.code_combination_id 科目ID,
gcc.summary_flag 汇总标记,
rra2.range_mode 汇总,
rra2.axis_set_id,
rra2.axis_seq,
rra2.sign 运算符号,
gcc.segment1||'.'||gcc.segment2||'.'||gcc.segment3||'.'||gcc.segment4
||'.'||gcc.segment5||'.'||gcc.segment6 账户,
gb.period_name 会计期间,
NVL(gb.begin_balance_dr,0)+NVL(gb.period_net_dr,0)
-NVL(gb.begin_balance_cr,0)-NVL(gb.period_net_cr,0) 期末数,
(select NVL(gb2.begin_balance_dr,0)-NVL(gb2.begin_balance_cr,0) 期初借方余额
from gl.gl_balances gb2
where gb2.period_year=gb.period_year
and gb2.period_num=1
and gb2.currency_code=gb.currency_code
and gb2.code_combination_id=gb.code_combination_id) 期初余额,
(select NVL(gb1.begin_balance_dr,0)+NVL(gb1.period_net_dr,0)
-NVL(gb1.begin_balance_cr,0)-NVL(gb1.period_net_cr,0) 本年累计
from gl.gl_balances gb1
where gb1.period_year=gb.period_year-1
and gb1.period_num=gb.period_num
and gb1.currency_code=gb.currency_code
and gb1.code_combination_id=gb.code_combination_id) 上年同期累计
from gl.gl_balances gb,
gl.gl_code_combinations gcc,
(select rra.axis_set_id,
rra.axis_seq,
rra.sign,
rra.range_mode,
rra.segment1_low,rra.segment1_high,
rra.segment2_low,rra.segment2_high,
rra.segment3_low,rra.segment3_high,
rra.segment4_low,rra.segment4_high,
rra.segment5_low,rra.segment5_high,
rra.segment6_low,rra.segment6_high
from rg.rg_report_axis_contents rra
where (rra.set_of_books_id=1 OR RRA.SET_OF_BOOKS_ID IS NULL)) rra2
where gb.code_combination_id=gcc.code_combination_id
and gb.currency_code='CNY'
and gb.actual_flag='A'
and gb.period_name='&请输入会计期间'
and gcc.segment1 in('&公司段1','&公司段2')
and gcc.segment2 between NVL(rra2.segment2_low,'00') and NVL(rra2.segment2_high,'T')
and gcc.segment3 between rra2.segment3_low and rra2.segment3_high
and gcc.segment4 between NVL(rra2.segment4_low,'00000000') and NVL(rra2.segment4_high,'T')
and gcc.segment5 between NVL(rra2.segment5_low,'000000') and NVL(rra2.segment5_high,'T')
and gcc.segment6 between NVL(rra2.segment6_low,'0000') and NVL(rra2.segment6_high,'T')
and gcc.summary_flag=rra2.range_mode
)a --a,此段代码用于计算账户分配金额
group by a.axis_set_id,a.axis_seq
)RRA3,
(SELECT RRC4.AXIS_SET_ID,
RRC4.AXIS_SEQ,
RRC4.CALCULATION_SEQ,
RRC4.OPERATOR,
DECODE(RRC5.AXIS_SEQ_LOW,NULL,RRC4.AXIS_SEQ_LOW,RRC5.AXIS_SEQ_LOW) AXIS_SEQ_LOW
FROM
(SELECT RRC2.AXIS_SET_ID,
RRC2.AXIS_SEQ,
RRC2.CALCULATION_SEQ,
RRC2.OPERATOR,
DECODE(RRC3.AXIS_SEQ_LOW,NULL,RRC2.AXIS_SEQ_LOW,RRC3.AXIS_SEQ_LOW) AXIS_SEQ_LOW
FROM
(select RRC0.AXIS_SET_ID,
RRC0.AXIS_SEQ,
RRC0.CALCULATION_SEQ,
RRC0.OPERATOR,
AX3.AXIS_SEQ AXIS_SEQ_LOW
from
(select rrc.AXIS_SET_ID,
rrc.AXIS_SEQ,
rrc.CALCULATION_SEQ,
RRC.OPERATOR,
decode(RRC.AXIS_SEQ_LOW,null,ax2.axis_seq,rrc.axis_seq_low) AXIS_SEQ_LOW,
RRC.AXIS_SEQ_HIGH
from rg.rg_report_calculations RRC,
RG.RG_REPORT_AXES AX2
WHERE RRC.AXIS_SET_ID=AX2.AXIS_SET_ID(+)
AND RRC.AXIS_NAME_LOW=AX2.AXIS_NAME(+)
) RRC0,
RG.RG_REPORT_AXES AX3
where AX3.AXIS_SET_ID=rrc0.AXIS_SET_ID
AND AX3.AXIS_SEQ BETWEEN RRC0.AXIS_SEQ_LOW AND RRC0.AXIS_SEQ_HIGH
) RRC2, --RRC2,基于计算的报表行区间,
(select RRC0.AXIS_SET_ID,
RRC0.AXIS_SEQ,
RRC0.CALCULATION_SEQ,
RRC0.OPERATOR,
AX3.AXIS_SEQ AXIS_SEQ_LOW
from
(select rrc.AXIS_SET_ID,
rrc.AXIS_SEQ,
rrc.CALCULATION_SEQ,
RRC.OPERATOR,
decode(RRC.AXIS_SEQ_LOW,null,ax2.axis_seq,rrc.axis_seq_low) AXIS_SEQ_LOW,
RRC.AXIS_SEQ_HIGH
from rg.rg_report_calculations RRC,
RG.RG_REPORT_AXES AX2
WHERE RRC.AXIS_SET_ID=AX2.AXIS_SET_ID(+)
AND RRC.AXIS_NAME_LOW=AX2.AXIS_NAME(+)
) RRC0,
RG.RG_REPORT_AXES AX3
where AX3.AXIS_SET_ID=rrc0.AXIS_SET_ID
AND AX3.AXIS_SEQ BETWEEN RRC0.AXIS_SEQ_LOW AND RRC0.AXIS_SEQ_HIGH
) RRC3 --RR3,与RR2相同,自引用
WHERE RRC2.AXIS_SET_ID=RRC3.AXIS_SET_ID(+)
AND RRC2.AXIS_SEQ_LOW=RRC3.AXIS_SEQ(+)) RRC4, --RRC4,基于计算的报表行区间,第一次分解
(SELECT RRC2.AXIS_SET_ID,
RRC2.AXIS_SEQ,
RRC2.CALCULATION_SEQ,
RRC2.OPERATOR,
DECODE(RRC3.AXIS_SEQ_LOW,NULL,RRC2.AXIS_SEQ_LOW,RRC3.AXIS_SEQ_LOW AXIS_SEQ_LOW
FROM
(select RRC0.AXIS_SET_ID,
RRC0.AXIS_SEQ,
RRC0.CALCULATION_SEQ,
RRC0.OPERATOR,
AX3.AXIS_SEQ AXIS_SEQ_LOW
from
(select rrc.AXIS_SET_ID,
rrc.AXIS_SEQ,
rrc.CALCULATION_SEQ,
RRC.OPERATOR,
decode(RRC.AXIS_SEQ_LOW,null,ax2.axis_seq,rrc.axis_seq_low) AXIS_SEQ_LOW,
RRC.AXIS_SEQ_HIGH
from rg.rg_report_calculations RRC,
RG.RG_REPORT_AXES AX2
WHERE RRC.AXIS_SET_ID=AX2.AXIS_SET_ID(+)
AND RRC.AXIS_NAME_LOW=AX2.AXIS_NAME(+)
) RRC0,
RG.RG_REPORT_AXES AX3
where AX3.AXIS_SET_ID=rrc0.AXIS_SET_ID
AND AX3.AXIS_SEQ BETWEEN RRC0.AXIS_SEQ_LOW AND RRC0.AXIS_SEQ_HIGH
) RRC2, --RRC2,基于计算的报表行区间
(select RRC0.AXIS_SET_ID,
RRC0.AXIS_SEQ,
RRC0.CALCULATION_SEQ,
RRC0.OPERATOR,
AX3.AXIS_SEQ AXIS_SEQ_LOW
from
(select rrc.AXIS_SET_ID,
rrc.AXIS_SEQ,
rrc.CALCULATION_SEQ,
RRC.OPERATOR,
decode(RRC.AXIS_SEQ_LOW,null,ax2.axis_seq,rrc.axis_seq_low) AXIS_SEQ_LOW,
RRC.AXIS_SEQ_HIGH
from rg.rg_report_calculations RRC,
RG.RG_REPORT_AXES AX2
WHERE RRC.AXIS_SET_ID=AX2.AXIS_SET_ID(+)
AND RRC.AXIS_NAME_LOW=AX2.AXIS_NAME(+)
) RRC0,
RG.RG_REPORT_AXES AX3
where AX3.AXIS_SET_ID = rrc0.AXIS_SET_ID
AND AX3.AXIS_SEQ BETWEEN RRC0.AXIS_SEQ_LOW AND RRC0.AXIS_SEQ_HIGH
) RRC3 --RR3,与RRC2相同,自引用
WHERE RRC2.AXIS_SET_ID = RRC3.AXIS_SET_ID(+)
AND RRC2.AXIS_SEQ_LOW = RRC3.AXIS_SEQ(+)) RRC5 --RRC5,与RRC4相同,自引用
WHERE RRC4.AXIS_SET_ID = RRC5.AXIS_SET_ID(+)
AND RRC4.AXIS_SEQ_LOW = RRC5.AXIS_SEQ(+)
) RRC6 --RRC6,基于计算的报表行区间,第二次分解
WHERE RRC6.AXIS_SET_ID=RRA3.AXIS_SET_ID(+)
AND RRC6.AXIS_SEQ_LOW=RRA3.AXIS_SEQ(+)
) A
GROUP BY A.AXIS_SET_ID,A.AXIS_SEQ
) B,
(select a.axis_set_id,
a.axis_seq,
SUM(DECODE(a.运算符号,'+',a.期初余额,'-',-a.期初余额,a.期初余额)) 期初余额,
SUM(DECODE(a.运算符号,'+',a.期末数,'-',-a.期末数,a.期末数)) 期末数,
SUM(Decode(a.运算符号,'+',a.上年同期累计,'-',-a.上年同期累计,a.上年同期累计)) 上年同期
from
(select gcc.code_combination_id 科目ID,
gcc.summary_flag 汇总标记,
rra2.range_mode 汇总,
rra2.axis_set_id,
rra2.axis_seq,
rra2.sign 运算符号,
gcc.segment1||'.'||gcc.segment2||'.'||gcc.segment3||'.'||gcc.segment4
||'.'||gcc.segment5||'.'||gcc.segment6 账户,
gb.period_name 会计期间,
NVL(gb.begin_balance_dr,0)+NVL(gb.period_net_dr,0)
-NVL(gb.begin_balance_cr,0)-NVL(gb.period_net_cr,0) 期末数,
(select NVL(gb2.begin_balance_dr,0)-NVL(gb2.begin_balance_cr,0) 期初借方余额
from gl.gl_balances gb2
where gb2.period_year = gb.period_year
and gb2.period_num = 1
and gb2.currency_code = gb.currency_code
and gb2.code_combination_id = gb.code_combination_id) 期初余额,
(select NVL(gb1.begin_balance_dr,0)+NVL(gb1.period_net_dr,0)
-NVL(gb1.begin_balance_cr,0)-NVL(gb1.period_net_cr,0) 本年累计
from gl.gl_balances gb1
where gb1.period_year = gb.period_year-1
and gb1.period_num = gb.period_num
and gb1.currency_code = gb.currency_code
and gb1.code_combination_id = gb.code_combination_id) 上年同期累计
from gl.gl_balances gb,
gl.gl_code_combinations gcc,
(select rra.axis_set_id,
rra.axis_seq,
rra.sign,
rra.range_mode,
rra.segment1_low,rra.segment1_high,
rra.segment2_low,rra.segment2_high,
rra.segment3_low,rra.segment3_high,
rra.segment4_low,rra.segment4_high,
rra.segment5_low,rra.segment5_high,
rra.segment6_low,rra.segment6_high
from rg.rg_report_axis_contents rra
where (rra.set_of_books_id=1 OR RRA.SET_OF_BOOKS_ID IS NULL)) rra2
where gb.code_combination_id = gcc.code_combination_id
and gb.currency_code = ’CNY’
and gb.actual_flag = 'A'
and gb.period_name = '&请输入会计期间'
and gcc.segment1 in ('&公司段1','&公司段2')
and gcc.segment2 between NVL(rra2.segment2_low,'00') and NVL(rra2.segment2_high,'T')
and gcc.segment3 between rra2.segment3_low and rra2.segment3_high
and gcc.segment4 between NVL(rra2.segment4_low,'00000000') and NVL(rra2.segment4_high,'T')
and gcc.segment5 between NVL(rra2.segment5_low,'000000') and NVL(rra2.segment5_high,'T')
and gcc.segment6 between NVL(rra2.segment6_low,'0000') and NVL(rra2.segment6_high,'T')
and gcc.summary_flag=rra2.range_mode
)a --a,此段代码用于计算账户分配金额
group by a.axis_set_id,a.axis_seq ) RRA4,
RG.RG_REPORT_AXES AX
WHERE AX.AXIS_SET_ID = RRA4.AXIS_SET_ID(+)
AND AX.AXIS_SEQ = RRA4.AXIS_SEQ(+)
AND AX.AXIS_SET_ID = B.AXIS_SET_ID(+)
AND AX.AXIS_SEQ = B.AXIS_SEQ(+)
AND AX.AXIS_SET_ID = 1259 --需要修改此报表行集ID
ORDER BY AX.AXIS_SEQ ;
通过SQL写FSG报表相关推荐
- mysql小计_Mysql必读用SQL实现统计报表中的小计与合计的方法详解
<Mysql必读用SQL实现统计报表中的"小计"与"合计"的方法详解>要点: 本文介绍了Mysql必读用SQL实现统计报表中的"小计&qu ...
- mysql 合计 小计_用SQL实现统计报表中的小计与合计的方法详解
本篇文章是对使用SQL实现统计报表中的"小计"与"合计"的方法进行了详细的分析介绍,需要的朋友参考下 客户提出需求,针对某一列分组加上小计,合计汇总.网上找了一 ...
- 使用sql语句生成报表_SQL Server报表服务:如何使用报表生成器处理常见的最终用户要求
使用sql语句生成报表 In this article, we will discuss the SQL Server Reporting Service Report Builder and loo ...
- IIS 7上安装SQL SERVER 2005报表服务可能导致不能正常连接
前段时间一直在研究SCOM 2007的报表功能,在POC里测试时候遇到一些问题,本打算装最新的产品WINDOWS SERVER 2008+SQL SERVER 2008+SCOM 2007.只是发现S ...
- 用sql写每年的第三周_SQL的弱点(1):复杂SQL不易理解,以及软件工程如何来帮忙...
1. SQL是经久不衰的基础 能经过时间考验的SQL,其优点毋庸置疑. 对于日常处理数据的朋友们(BI顾问,数据开发,数仓建模,数据研发,ETL工程师,AI工程师等),SQL更是一项非常重要的基础技能 ...
- oracle中执行某sql语句后,如一系列delete、update等操作,怎么看影响的行数?如我执行了n个表的delete语句,得看我删除了多少数据,万一sql写的有问题,误删了数据,不是灾难?
oracle中执行某sql语句后,如一系列delete.update等操作,怎么看影响的行数?如我执行了n个表的delete语句,得看我删除了多少数据,万一sql写的有问题,误删了数据,不是灾难? 使 ...
- update更新excel如何指定列为memo_Excel也能设计回写类报表
Excel也能设计回写类报表?没错啦,今天给大家介绍一个中国式报表软件--Smartbi企业报表软件(简称Smartbi Insight). Smartbi企业报表软件(简称Smartbi Insig ...
- sql server 2012 报表开发(1) 如何使用Reporting Service 2012制作报表
Reporting Service,也就是我们平时经常看到的,报表商业智能,BI,基于SQL Server的报表制作工具,这里的例子,是如何通过visual studio 2010,开发Reporti ...
- sql server 2008 报表部署:提示输入用户名密码
1.环境: winserver 2003 IIS6.0 sqlserver 2008 10.XXXX 2.查看 sqlserver 2008 开始\菜单\程序\Microsoft SQL Server ...
- 报表性能优化方案之单数据集分页SQL实现层式报表
1.概述 我们知道,行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其他数据库,如access,sqlserver2005,sqlite等必须编写分 ...
最新文章
- 计算机应届生必读的 AI 入门经典书单
- 预言丨AI之后无AI
- MySQL 5.1 的作业调度
- python文件输出-Python 文件和输入输出小结
- uni的numberbox怎么用_uni-组件基本操作
- 10.Partial Dependence Plots
- 《Web Hacking 101》中的链接整理
- Laravel中自定义guard,自定义Auth的attempt方法
- 单体 soa 微服务 区别_每日一读-从单体到微服务,这些年架构的演变
- 5 分钟掌握智联招聘网站爬取并保存到 MongoDB 数据库
- iOS集成支付宝H5支付实现跳转与回调的解决方案
- 2000-2018年各省能源消费和碳排放数据数据、1997-2017年各省地级市县区碳排放数、各国二氧化碳排放量(人均公吨数)1960-2014年、二氧化碳排放量、各省市碳排放权额分配实施方案
- java pojo属性,java中的POJO类属性建议使用包装数据类型
- Matlab画堆叠柱状图(颜色设置,x轴外部标注,y轴标注,颜色设置)
- elasticsearch启动常见错误
- C++Primer 习题 第7章
- 变形金刚2 昨日上映 汽车人提前降临地球
- 【MySQL】黑马教程MySQL数据库 MySQL基础(一)
- git clone出现 fatal: unable to access ‘https://github.com/...‘的解决办法(亲测有效)
- 奶爸日记7 - 新手第一次开车上路