WITH T1 AS(
SELECT CGBT.SEGMENT1,
CGBT.SEGMENT3,
(SELECT SRC_COD_VALUE FROM F_COM_CODE_CONV WHERE SRC_CODE_TYPE='FIN000000' AND TAR_CODE_VALUE=CGBT.CURRENCY_CODE) CURRENCY_CODE,
TO_CHAR(CGBT.ACCOUNTING_DATE,'YYYY-MM-DD') ACCOUNTING_DATE,
B.DR_CR_FLAG,
NVL(SUM(CASE WHEN TO_CHAR(CGBT.ACCOUNTING_DATE,'MM-DD') LIKE '12-31' THEN
CASE WHEN CGBT.PERIOD LIKE '%-13' THEN CGBT.DR_END_BAL ELSE 0 END ELSE CGBT.DR_END_BAL END ),0) DR_END_BAL,
NVL(SUM(CASE WHEN TO_CHAR(CGBT.ACCOUNTING_DATE,'MM-DD') LIKE '12-31' THEN
CASE WHEN CGBT.PERIOD LIKE '%-13' THEN CGBT.CR_END_BAL ELSE 0 END ELSE CGBT.CR_END_BAL END ),0) CR_END_BAL
FROM F_INN_GLG_CUX_GL_BALANCES_T CGBT ,
(SELECT DISTINCT FFVV.ATTRIBUTE10 DR_CR_FLAG,FFVV.FLEX_VALUE
FROM T_V_FIN_FND_FLEX_VALUES FFVV,F_COM_INN_FND_FLEX_VALUE_SETS FFVS
WHERE FFVS.FLEX_VALUE_SET_ID = FFVV.FLEX_VALUE_SET_ID AND FFVS.FLEX_VALUE_SET_NAME = 'GLB_COA_ACCOUNTING') B
WHERE B.FLEX_VALUE = CGBT.SEGMENT3 AND CGBT.ACCOUNTING_DATE = TO_DATE('#WORK_DAY#','YYYY-MM-DD')
GROUP BY CGBT.SEGMENT1,CGBT.SEGMENT3,CGBT.CURRENCY_CODE,CGBT.ACCOUNTING_DATE,B.DR_CR_FLAG
),
T2 AS(
SELECT SEGMENT1,SEGMENT3,(SELECT SRC_COD_VALUE FROM F_COM_CODE_CONV WHERE SRC_CODE_TYPE='FIN000000' AND TAR_CODE_VALUE=CGBT.CURRENCY_CODE) CURRENCY_CODE,
NVL(SUM(CGBT.DR_BEGIN_BAL),0) DR_BEGIN_BAL,
NVL(SUM(CGBT.CR_BEGIN_BAL),0) CR_BEGIN_BAL
--INTO V_DR_BEGIN_BAL,V_CR_BEGIN_BAL
FROM F_INN_GLG_CUX_GL_BALANCES_T CGBT
WHERE (CASE WHEN TO_CHAR(CGBT.ACCOUNTING_DATE,'MM-DD') LIKE '12-31' THEN CASE WHEN CGBT.PERIOD LIKE '%-12' THEN 1 ELSE 0 END ELSE 1 END) = 1
AND CGBT.ACCOUNTING_DATE = TO_DATE(SUBSTR('#WORK_DAY#',1,6)||'01','YYYY-MM-DD')
GROUP BY SEGMENT1,SEGMENT3,CURRENCY_CODE
),
T3 AS(
SELECT SEGMENT1,SEGMENT3,(SELECT SRC_COD_VALUE FROM F_COM_CODE_CONV WHERE SRC_CODE_TYPE='FIN000000' AND TAR_CODE_VALUE=CGBT.CURRENCY_CODE) CURRENCY_CODE,
NVL(SUM(CGBT.DR_BEGIN_BAL),0) PRE_DR_END_BAL,
NVL(SUM(CGBT.CR_BEGIN_BAL),0) PRE_CR_END_BAL
--INTO PRE_DR_END_BAL,PRE_CR_END_BAL
FROM F_INN_GLG_CUX_GL_BALANCES_T CGBT
WHERE (CASE WHEN TO_CHAR(CGBT.ACCOUNTING_DATE,'MM-DD') LIKE '12-31' THEN CASE WHEN CGBT.PERIOD LIKE '%-12' THEN 0 ELSE 1 END ELSE 1 END) = 1
AND CGBT.ACCOUNTING_DATE = TO_DATE(SUBSTR('#WORK_DAY#',1,6)||'01','YYYY-MM-DD') - 1 DAYS
GROUP BY SEGMENT1,SEGMENT3,CURRENCY_CODE
),
T4 AS(
SELECT SEGMENT1,SEGMENT3,(SELECT SRC_COD_VALUE FROM F_COM_CODE_CONV WHERE SRC_CODE_TYPE='FIN000000' AND TAR_CODE_VALUE=CGBT.CURRENCY_CODE) CURRENCY_CODE,
NVL(SUM(CGBT.DR_BEGIN_BAL),0) YEAR_DR_BEGIN_BAL,
NVL(SUM(CGBT.CR_BEGIN_BAL),0) YEAR_CR_BEGIN_BAL
--INTO YEAR_DR_BEGIN_BAL,YEAR_CR_BEGIN_BAL
FROM F_INN_GLG_CUX_GL_BALANCES_T CGBT
WHERE CGBT.ACCOUNTING_DATE = TO_DATE(SUBSTR('#WORK_DAY#',1,4)||'0101','YYYY-MM-DD')
GROUP BY SEGMENT1,SEGMENT3,CURRENCY_CODE
)
SELECT T1.SEGMENT1 JGDH,
T1.SEGMENT3 KMDH,
T1.CURRENCY_CODE HB,
T1.ACCOUNTING_DATE RQ,
CAST(CASE WHEN T1.DR_CR_FLAG = 'DR' THEN NVL(T1.DR_END_BAL,0)-NVL(T1.CR_END_BAL,0) WHEN T1.DR_CR_FLAG = 'CR' THEN 0
ELSE CASE WHEN NVL(T1.DR_END_BAL,0)-NVL(T1.CR_END_BAL,0) >=0 THEN NVL(T1.DR_END_BAL,0)-NVL(T1.CR_END_BAL,0) ELSE 0 END END AS DECIMAL(20,2)) JFYE,
CAST(CASE WHEN T1.DR_CR_FLAG = 'DR' THEN 0 WHEN T1.DR_CR_FLAG = 'CR' THEN NVL(T1.CR_END_BAL,0)-NVL(T1.DR_END_BAL,0)
ELSE CASE WHEN NVL(T1.CR_END_BAL,0)-NVL(T1.DR_END_BAL,0) >=0 THEN NVL(T1.CR_END_BAL,0)-NVL(T1.DR_END_BAL,0) ELSE 0 END END AS DECIMAL(20,2)) DFYE,
CAST(NVL(T1.DR_END_BAL,0) - NVL(T2.DR_BEGIN_BAL,0) AS DECIMAL(20,2)) JFFSE,
CAST(NVL(T1.CR_END_BAL,0) - NVL(T2.CR_BEGIN_BAL,0) AS DECIMAL(20,2)) DFFSE,
CAST(CASE WHEN T1.DR_CR_FLAG = 'DR' THEN NVL(T3.PRE_DR_END_BAL,0)-NVL(T3.PRE_CR_END_BAL,0) WHEN T1.DR_CR_FLAG = 'CR' THEN 0
ELSE CASE WHEN NVL(T3.PRE_DR_END_BAL,0)-NVL(T3.PRE_CR_END_BAL,0) >=0 THEN NVL(T3.PRE_DR_END_BAL,0)-NVL(T3.PRE_CR_END_BAL,0) ELSE 0 END END AS DECIMAL(20,2)) SQJFYE,
CAST(CASE WHEN T1.DR_CR_FLAG = 'DR' THEN NVL(T3.PRE_CR_END_BAL,0)-NVL(T3.PRE_DR_END_BAL,0) WHEN T1.DR_CR_FLAG = 'CR' THEN 0
ELSE CASE WHEN NVL(T3.PRE_CR_END_BAL,0)-NVL(T3.PRE_DR_END_BAL,0) >=0 THEN NVL(T3.PRE_CR_END_BAL,0)-NVL(T3.PRE_DR_END_BAL,0) ELSE 0 END END AS DECIMAL(20,2)) SQDFYE,
CAST(NVL(T1.DR_END_BAL,0) - NVL(T4.YEAR_DR_BEGIN_BAL,0) AS DECIMAL(20,2)) NLJJFFSE,
CAST(NVL(T1.CR_END_BAL,0) - NVL(T4.YEAR_CR_BEGIN_BAL,0) AS DECIMAL(20,2)) NLJDFFSE,
CAST(CASE WHEN T1.DR_CR_FLAG = 'DR' THEN NVL(T4.YEAR_DR_BEGIN_BAL,0)-NVL(T4.YEAR_CR_BEGIN_BAL,0) WHEN T1.DR_CR_FLAG = 'CR' THEN 0
ELSE CASE WHEN NVL(T4.YEAR_DR_BEGIN_BAL,0)-NVL(T4.YEAR_CR_BEGIN_BAL,0) >=0 THEN NVL(T4.YEAR_DR_BEGIN_BAL,0)-NVL(T4.YEAR_CR_BEGIN_BAL,0) ELSE 0 END END AS DECIMAL(20,2)) NCJFYE,
CAST(CASE WHEN T1.DR_CR_FLAG = 'DR' THEN NVL(T4.YEAR_CR_BEGIN_BAL,0)-NVL(T4.YEAR_DR_BEGIN_BAL,0) WHEN T1.DR_CR_FLAG = 'CR' THEN 0
ELSE CASE WHEN NVL(T4.YEAR_CR_BEGIN_BAL,0)-NVL(T4.YEAR_DR_BEGIN_BAL,0) >=0 THEN NVL(T4.YEAR_CR_BEGIN_BAL,0)-NVL(T4.YEAR_DR_BEGIN_BAL,0) ELSE 0 END END AS DECIMAL(20,2)) NCDFYE
FROM T1 LEFT JOIN
T2 ON T1.SEGMENT1=T2.SEGMENT1 AND T1.SEGMENT3=T2.SEGMENT3 AND T1.CURRENCY_CODE=T2.CURRENCY_CODE LEFT JOIN
T3 ON T1.SEGMENT1=T3.SEGMENT1 AND T1.SEGMENT3=T3.SEGMENT3 AND T1.CURRENCY_CODE=T3.CURRENCY_CODE LEFT JOIN
T4 ON T1.SEGMENT1=T4.SEGMENT1 AND T1.SEGMENT3=T4.SEGMENT3 AND T1.CURRENCY_CODE=T4.CURRENCY_CODE
分享到:
相关推荐
sql 2005中用CTE实现递归的很好很易懂很基础的例子讲解。
ibm_db2 — IBM DB2, Cloudscape and Apache Derby Functions iconv — iconv Functions id3 — ID3 Functions IIS Functions — IIS Administration Functions Image — Image 图像函数 Imagick Image Library IMAP...
ibm_db2 — IBM DB2, Cloudscape and Apache Derby Functions iconv — iconv Functions id3 — ID3 Functions IIS Functions — IIS Administration Functions Image — Image 图像函数 Imagick Image Library IMAP...
50. Working with classes and objects 51. Working with resources 52. Working with INI settings 53. Working with streams 54. PDO Driver How-To 55. Extension FAQs 56. Zend Engine 2 API reference ...
PHP,即“PHP: Hypertext Preprocessor”,是一种被广泛使用的开放源代码多用途脚本语言,尤其适用于 web 开发并可以嵌入到 HTML 中去。其语法利用了 C,Java 和 Perl,非常容易学习。该语言的主要目标是让 web 开发...
最好的sql教程 轻举技术之“纲”,张合用之“目”,锻造SQL高可用性数据库应用指南从理论到实践,... A.1 DB2的安装和使用 A.2 MySQL的安装和使用 A.3 Oracle的安装和使用 A.4 Microsoft SQL Server的安装和使用
目录 第1章 数据库入门 1.1 数据库概述 1.1.1 数据库与数据库管理系统 ... A.1 DB2的安装和使用 A.2 MySQL的安装和使用 A.3 Oracle的安装和使用 A.4 Microsoft SQL Server的安装和使用 显示部分信息
目录 第1章 数据库入门 1.1 数据库概述 1.1.1 数据库与数据库管理系统 ... A.1 DB2的安装和使用 A.2 MySQL的安装和使用 A.3 Oracle的安装和使用 A.4 Microsoft SQL Server的安装和使用 显示部分信息
目录 第1章 数据库入门 1.1 数据库概述 1.1.1 数据库与数据库管理系统 ... A.1 DB2的安装和使用 A.2 MySQL的安装和使用 A.3 Oracle的安装和使用 A.4 Microsoft SQL Server的安装和使用 显示部分信息
目录 第1章 数据库入门 1.1 数据库概述 1.1.1 数据库与数据库管理系统 ... A.1 DB2的安装和使用 A.2 MySQL的安装和使用 A.3 Oracle的安装和使用 A.4 Microsoft SQL Server的安装和使用 显示部分信息
oracle的函数; oracle数据库管理;oracle 的权角色; pl/sql 编程; 索引,约束和事物。 期望目标: 1 学会安装、启动、卸载oracle 2 使用sql *plus工具 3 掌握oracle用户管理 4 学会在oracle中编写简单的select...
free:该函数获得指向由 malloc 分配的内存片段的指针,并将其释放,以便以后的程序或操作系统使用(实际上,一些 malloc 实现只能将内存归还给程序,而无法将内存归还给操作系统)。 物理内存和虚拟内存 要理解...
在 SQL Server 2005 中使用表值函数来实现空间数据库 SQL Server 2005的30个最重要特点 同时安装sql2000和sql2005的经验 类如何与界面绑定 在Asp.net中如何用SQLDMO来获取SQL Server中的对象信息 使用Relations建立...
db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器。收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时...
3. SQL常用命令使用方法: (1) 数据记录筛选: sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 like \'%字段值%\' order by 字段名 [desc]" ...
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明...
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明...
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明...