with TEMP as
(select sum(MMT.TRANSACTION_QUANTITY) QTY_QC, MMT.INVENTORY_ITEM_ID --,CAH.Legal_Entity_Id,CAH.COST_GROUP_ID,CAH.COST_TYPE_ID
from MTL_MATERIAL_TRANSACTIONS MMT, CST_AE_HEADERS CAH --,CST_AE_LINES CAL
where MMT.TRANSACTION_QUANTITY <> 0
AND MMT.TRANSACTION_TYPE_ID NOT IN (2, 52, 10008)
AND MMT.INVENTORY_ITEM_ID = nvl(:P_ITEM_ID, mmt.inventory_item_id) --100528
AND CAH.ACCOUNTING_DATE = MMT.TRANSACTION_DATE
AND CAH.accounting_event_id = MMT.TRANSACTION_ID
AND CAH.ACCOUNTING_DATE > to_date('2013-04-27', 'YYYY-MM-DD') --oracle开账日期
AND CAH.ACCOUNTING_DATE < to_date(:P_START_DATE, 'YYYY-MM-DD')
AND CAH.ACCT_EVENT_SOURCE_TABLE = 'MMT'
AND CAH.COST_GROUP_ID = :P_COST_GROUP
AND CAH.LEGAL_ENTITY_ID = :P_LEGAL_ENTITY
GROUP BY MMT.INVENTORY_ITEM_ID)
select CCG.COST_GROUP COST_GROUP,
CCG.DESCRIPTION COST_DESCRIPTION,
:P_START_DATE START_DATE, ------起始日期 ///////////时间参数
:P_END_DATE END_DATE, ------截止日期 ////////////时间参数
GCC.SEGMENT3,
GL_FLEXFIELDS_PKG.GET_DESCRIPTION_SQL(GCC.CHART_OF_ACCOUNTS_ID,
3,
GCC.SEGMENT3) SEGMENT3_DESC,
MSI.SEGMENT1 INVENTORY_ITEM_NO, -----物料编码
MSI.DESCRIPTION INVENTORY_ITEM_DESCRIPTION, -----物料描述
MSI.ATTRIBUTE12 PRIDUCTLINE, --产品线
NULL ACC_DESCRIPTION, -----帐户类别
A.QTY_QC, --期初数量
DECODE(A.QTY_QC, 0, 0, ROUND(B.ACCOUNTED_QC / A.QTY_QC, 6)) UP_QC, -----期初单位成本
B.ACCOUNTED_QC, --期初金额
C.QTY_ENTER,
DECODE(C.QTY_ENTER, 0, 0, ROUND(D.ACCOUNTED_DR / C.QTY_ENTER, 6)) UP_DR, -----本期入库单位成本
D.ACCOUNTED_DR,
C.QTY_OUT,
DECODE(C.QTY_OUT, 0, 0, ROUND(D.ACCOUNTED_CR / C.QTY_OUT, 6)) UP_CR, -----本期出库单位成本
D.ACCOUNTED_CR,
A.QTY_QC - C.QTY_ENTER - C.QTY_OUT QTY_QM, -----期末结存数量
DECODE((A.QTY_QC + C.QTY_ENTER - C.QTY_OUT),
0,
0,
ROUND((B.ACCOUNTED_QC + D.ACCOUNTED_DR - D.ACCOUNTED_CR) /
(A.QTY_QC + C.QTY_ENTER - C.QTY_OUT),
6)) UP_QM, -----期末结存单位成本
B.ACCOUNTED_QC + D.ACCOUNTED_DR - D.ACCOUNTED_CR ACCOUNTED_QM, -----期末结存成本金额
GL_FLEXFIELDS_PKG.GET_CONCAT_DESCRIPTION(GCC.CHART_OF_ACCOUNTS_ID,
GCC.CODE_COMBINATION_ID) ACCOUNT_DESC -----会计科目组合描述
from TEMP A,
--期初数量
--期初金额
(SELECT sum(nvl(cal.accounted_dr, 0) - nvl(cal.accounted_cr, 0)) ACCOUNTED_QC,
mmt.inventory_item_id,
CAL.CODE_COMBINATION_ID
FROM CST_AE_HEADERS CAH,
MTL_MATERIAL_TRANSACTIONS MMT,
CST_AE_LINES CAL,
GL_CODE_COMBINATIONS GCC,
FND_FLEX_VALUES FFVS,
CST_COST_GROUPS CCG,
TEMP T
where cah.ae_header_id = cal.ae_header_id
and CAL.DESCRIPTION IN ('库存估价', 'Inv valuation') -----------
AND CAL.SOURCE_TABLE = 'MMT'
and MMT.TRANSACTION_TYPE_ID NOT IN (2, 52, 10008)
AND CAH.ACCOUNTING_DATE = MMT.TRANSACTION_DATE
AND CAH.accounting_event_id = MMT.TRANSACTION_ID
and CAH.ACCOUNTING_DATE > to_date('2013-04-27', 'YYYY-MM-DD') --oracle开账日期
AND CAH.ACCOUNTING_DATE < to_date(:P_START_DATE, 'YYYY-MM-DD')
AND CAH.ACCT_EVENT_SOURCE_TABLE = 'MMT'
AND CAH.COST_GROUP_ID = :P_COST_GROUP
AND CAH.LEGAL_ENTITY_ID = :P_LEGAL_ENTITY
AND FFVS.ATTRIBUTE2 = '存货核算'
AND FFVS.VALUE_CATEGORY = 'GL_MEG_ACCOUNT'
AND GCC.SEGMENT3 = FFVS.FLEX_VALUE
AND GCC.CODE_COMBINATION_ID = CAL.CODE_COMBINATION_ID
and CCG.COST_GROUP_ID = CAH.COST_GROUP_ID
AND T.INVENTORY_ITEM_ID = MMT.INVENTORY_ITEM_ID
group by mmt.inventory_item_id, CAL.CODE_COMBINATION_ID) B,
--本期入库数量、本期出库数量
(select sum(case
when MMT.TRANSACTION_QUANTITY > 0 then
MMT.TRANSACTION_QUANTITY
else
0
end) QTY_ENTER,
sum(case
when MMT.TRANSACTION_QUANTITY < 0 then
-MMT.TRANSACTION_QUANTITY
else
0
end) QTY_OUT,
MMT.INVENTORY_ITEM_ID --,CAH.Legal_Entity_Id,CAH.COST_GROUP_ID,CAH.COST_TYPE_ID
from MTL_MATERIAL_TRANSACTIONS MMT, CST_AE_HEADERS CAH, TEMP T --,
-- CST_AE_LINES CAL
where MMT.TRANSACTION_QUANTITY <> 0
AND MMT.TRANSACTION_TYPE_ID NOT IN (2, 52, 10008)
--AND MMT.INVENTORY_ITEM_ID=100528
AND CAH.ACCOUNTING_DATE = MMT.TRANSACTION_DATE
AND CAH.accounting_event_id = MMT.TRANSACTION_ID
AND CAH.ACCOUNTING_DATE >= to_date(:P_START_DATE, 'YYYY-MM-DD') --oracle开账日期
AND CAH.ACCOUNTING_DATE < to_date(:P_END_DATE, 'YYYY-MM-DD') + 1
AND CAH.ACCT_EVENT_SOURCE_TABLE = 'MMT'
AND CAH.COST_GROUP_ID = :P_COST_GROUP
AND CAH.LEGAL_ENTITY_ID = :P_LEGAL_ENTITY
AND T.INVENTORY_ITEM_ID = MMT.INVENTORY_ITEM_ID
GROUP BY MMT.INVENTORY_ITEM_ID) C,
--本期入库金额、本期入库金额
(SELECT sum(nvl(cal.accounted_dr, 0)) ACCOUNTED_DR,
SUM(nvl(cal.accounted_cr, 0)) ACCOUNTED_CR,
mmt.inventory_item_id
FROM CST_AE_HEADERS CAH,
MTL_MATERIAL_TRANSACTIONS MMT,
CST_AE_LINES CAL,
TEMP T
where CAL.DESCRIPTION IN ('库存估价', 'Inv valuation') -----------
AND CAL.SOURCE_TABLE = 'MMT'
AND cah.ae_header_id = cal.ae_header_id
and MMT.TRANSACTION_TYPE_ID NOT IN (2, 52, 10008)
--AND MMT.INVENTORY_ITEM_ID=100528
AND CAH.ACCOUNTING_DATE = MMT.TRANSACTION_DATE
AND CAH.accounting_event_id = MMT.TRANSACTION_ID
and CAH.ACCOUNTING_DATE >= to_date(:P_START_DATE, 'YYYY-MM-DD') --oracle开账日期
AND CAH.ACCOUNTING_DATE < to_date(:P_END_DATE, 'YYYY-MM-DD') + 1
AND CAH.ACCT_EVENT_SOURCE_TABLE = 'MMT'
AND CAH.COST_GROUP_ID = :P_COST_GROUP
AND CAH.LEGAL_ENTITY_ID = :P_LEGAL_ENTITY
AND T.INVENTORY_ITEM_ID = MMT.INVENTORY_ITEM_ID
group by mmt.inventory_item_id) D,
mtl_system_items_b MSI,
CST_COST_GROUPS CCG,
GL_CODE_COMBINATIONS GCC
WHERE CCG.COST_GROUP_ID = :P_COST_GROUP
and CCG.LEGAL_ENTITY = :P_LEGAL_ENTITY
AND A.inventory_item_id = B.inventory_item_id(+)
AND A.inventory_item_id = C.inventory_item_id(+)
AND A.inventory_item_id = D.inventory_item_id(+)
AND A.inventory_item_id = MSI.inventory_item_id
AND MSI.ORGANIZATION_ID = 82
and B.CODE_COMBINATION_ID = GCC.CODE_COMBINATION_ID
AND (A.QTY_QC <> 0 OR B.ACCOUNTED_QC <> 0)

oracle产销存的写法的更多相关文章

  1. jdbc应用程序连接Oracle rac的URL写法:

    1.应用程序连接Oracle rac的URL写法: #Oracle(AMS) jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url ...

  2. Oracle的存储过程基本写法

    转: Oracle的存储过程基本写法 目录 1.1,Oracle存储过程简介: 1.2,创建存储过程的语法: 2.0,游标的使用.看到的一段解释很好的概念,如下: 回到顶部 1.1,Oracle存储过 ...

  3. oracle update left join 写法

    oracle update left join 写法 (修改某列,条件字段在关联表中) 案例: E:考核表 X,:用户表 USERNAME 关联 需求:修改营业部最高分 分析:通过登录账号的营业部OR ...

  4. mybatis批量增、删、改(更新)操作oracle和mysql批量写法小记

    前言:用mybatis也好几年了,mybatis在批量的增删操作也写起来也是比较简单的,只有批量更新这一块是特别坑,特此记录. 注:本文主要用来记录oracle和mysql数据库在使用mybatis的 ...

  5. mybatis中Oracle分页语句的写法

    最近一段时间使用oracle数据库查询分页, 用的是springboot. Oracle数据库中没有像mysql中limit的写法, 只能换其他方式写. 考虑到oracle中的ROWNUM变量, 使用 ...

  6. oracle中分页函数写法

    1.常见的分页查询语句: 查询21到40条之间的数据:SELECT *FROM (select UI.*,ROWNUM RN FROM (select * from user_info) AWHERE ...

  7. oracle之三存储库及顾问框架

    AWR存储库及顾问框架(PPT-I-349-360) 14.1 Oracle数据库采样ASH和AWR. 1) ASH(Active Session History) ASH收集的是活动会话的样本数据, ...

  8. Oracle 中的Top写法

    由于Oracle不支持select top 语句,所以在Oracle中经常是用order by 跟rownum的组合来实现select top n的查询.简单地说,实现方法如下所示:select 列名 ...

  9. oracle计算过程执行时间写法

    --在oracle写过程中很多是对数据处理,业务比较繁琐,有的需要结合job定时器使用,这样就需要知道执行过程的大概时间,不废话直接上脚本,统计单位为分钟 PROCEDURE DATA_DEAL_WI ...

随机推荐

  1. 在 Spring Boot 项目中使用 activiti

    新建springBoot项目时勾选activiti,或者在已建立的springBoot项目添加以下依赖: <dependency> <groupId>org.activiti& ...

  2. Linux 命令行初始化MySQL数据库

    作为一个技术纯小白,在Linux服务器初始化MySQL数据库的时候遇到了一点小问题: ​ 1.不会使用MySQL图形工具,几乎没玩过 ​ 2.客户的VPN没有开放3306端口,没法用navicat等工 ...

  3. requests第三方库

    requests第三方库 简介: requests是一个优雅而简单的Python 第三方HTTP请求库,专为人类而构建. requests的官方文档同样也非常的完善详尽,而且少见的有中文官方文档:ht ...

  4. utf8和utf8mb4的区别

    一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为ut ...

  5. IT兄弟连 HTML5教程 CSS3属性特效 渐变2 线性渐变实例

    3 线性渐变实例 一.颜色从顶部向底部渐变 制作从顶部到底部直线渐变有三种方法,第一种是起点参数不设置,因为起点参数的默认值为“top”:第二种方法起点参数设置为“top”:第三种起点参数使用“-90 ...

  6. SpringBoot源码篇:Spring5内置tomcat实现code-based的web.xml实现

    一.简介 上篇文章讲了SpingBoot诞生的历史背景和技术演进背景,并通过源码说明了SpringBoot是如何实现零配置的包括如何省去web.xml配置的原理.本文接上一篇文章,通过demo演示Sp ...

  7. Spring Boot Security 保护你的程序

    Spring Boot Security 本示例要内容 基于角色的权限访问控制 加密.解密 基于Spring Boot Security 权限管理框架保护应用程序 String Security介绍 ...

  8. sleuth和zipkin微服务里的链路跟踪

    分布式链路跟踪介绍 对于一个微服务系统,大多数来自外部的请求都会经过数个服务的互相调用,得到返回的结果,一旦结果回复较慢或者返回了不可用,我们就需要确定是哪个微服务出了问题.于是就有了分布式系统调用跟 ...

  9. 字符串模式匹配——KMP算法

    KMP算法匹配字符串 朴素匹配算法   字符串的模式匹配的方法刚开始是朴素匹配算法,也就是经常说的暴力匹配,说白了就是用子串去和父串一个一个匹配,从父串的第一个字符开始匹配,如果匹配到某一个失配了,就 ...

  10. border-box和CSS3 calc()解决盒模型加边框或边距后尺寸变大的问题

    box-sizing box-sizing的CSS属性是用来改变默认的CSS框模型 属性 初始值:content-box 适用于:接受的所有元素的宽度或高度 继承:无 媒体:visual 指定的:as ...