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
分享到:
相关推荐
在数据库管理领域,DB2和Oracle是两款广泛使用的高性能关系型数据库管理系统。它们都提供了丰富的内置函数,以支持复杂的查询、数据处理和分析任务。本合集涵盖了DB2与Oracle的函数大全,旨在帮助数据库管理员和开发...
- **XML类型**:DB2支持`XML`类型,而GreenPlum/PostgreSQL也支持XML数据类型的存储,但可能需要使用不同的函数来处理XML数据。 此外,还需要注意的是,DB2有一些内置的函数和操作用于处理特殊数据类型,而在...
在数据库设计部分,书中涵盖了关系数据库模型、ER图(实体关系图)的绘制,以及如何使用DB2的数据定义语言(DDL)创建数据库表。此外,还会介绍如何管理数据库对象,如索引、视图和存储过程。 关于数据操作,读者将...
IBM Query and Manage XML Data with DB2 9是一门由IBM官方提供的专业培训课程,旨在帮助学员掌握如何在DB2 9数据库系统中查询和管理XML数据。这门课程的代码为CG13,提供的是Instructor Guide版本。 #### 二、目标...
如果在游标中使用了`WITH HOLD`选项,那么在提交或回滚事务后,游标的状态不会改变。游标有两种常见的处理方式:一种是使用`DECLARE`、`OPEN`、`FETCH`和`CLOSE`语句进行手动控制;另一种是使用`FOR LOOP`语法,更...
### DB2使用经验积累及心得 #### 前言 本文档主要总结了在首都国际机场、海口梅兰国际机场系统的开发过程中积累的DB2使用经验和心得。这些经验来源于实际项目实践,涉及DB2数据库的多种应用场景和技术细节。所处的...
DB2中可以使用CASE函数来实现复杂的逻辑判断,例如set prodname = (case when (name is not null) then name when (namestr is not null) then namestr else defaultname end);该语句可以实现对prodname变量的赋值,...
- 使用`ALTER TABLE TableName ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE;` - 这个操作在DB2中也能高效地清空表。 #### 6. 关于ROWID - **Oracle**: - ROWID是Oracle数据库提供的一个特殊功能,用于唯一...
### ORACLE转DB2对照全解 #### 一、Oracle SQL PL与DB2 ...**注意:** Oracle使用`NVL`函数来处理空值,而DB2则使用`COALESCE`函数来实现。 #### 十九、返回rowtype的函数 **Oracle:** ```sql CREATE OR REPLACE ...
- **怎样获得自己的数据库连接句柄**:使用`DB2_CONNECT_HANDLE`或`DB2_API_CONNECT_HANDLE`函数获取连接句柄。 - **类似于ORACLE的NAMEPIPE**:DB2不直接支持NAMEPIPE,但可通过TCP/IP等其他通信机制实现类似功能...
同样地,在DB2中使用`TO_DATE`函数转换字符串为日期时间,而在MySQL中则使用`STR_TO_DATE`函数。 ```sql -- DB2 SELECT F_GET_STR_TO_DATE(startDate DATETIME, split_format VARCHAR(25), dateType VARCHAR(3)) --...
尽管文档中提到CURSOR不能定义为WITH UR,但在实际操作中,DB2允许使用`WITH UR`关键字与CURSOR结合。 #### CURSOR ORDER BY 以后不能FOR UPDATE DB2中确实存在这样的限制:带有`ORDER BY`子句的CURSOR不能使用`FOR...
- 可以使用`db2 list application for <database_name> show detail`命令列出所有连接到数据库的应用程序信息及其ID。 - 强制关闭可能会导致未保存的数据丢失,因此在执行此类操作时需谨慎。 #### 六、备份数据库 *...
* 434:在 DB2 未来发布的版本中将不支持指定的特性,IBM 建议你停止使用这些特性 * 445:值被 CAST 函数截取 * 462:由用户定义的函数或存储过程发出的警告 * 464:命名的存储过程超出了它可能返回的查询结果集的...