月头月尾oracle取数,Oracle分析函数Over()的使用

今天为完成客户成品仓盘点的统计功能,做了盘点统计表,这个功能有点复杂,要将生产数据与库存的差异做成一个统计报表,报表要反映出差异的明细。

76581f47b503d02909d7c857594c85d4.png

其实,这个项目拖了也挺久了,本来客户计划用于2018年终盘点,不过,后来管理层作出决定,认为年终盘点启动一个新项目的有风险,所以,项目交期延长,改为了今年的季度盘点,即3月底的盘点,现在已经3月份了,项目要尽快完成,以便客户使用。

为了实际统计报表一目了然的效果,必须显示生产型号、WIP结存、库存数(包括:货架,尾数架及尾数框),重点是显示差异的明细。在做报表过程,查询了很多关于ORACLE的函数,其中对于分析函数Over()还是第一次使用,该函数功能强大,特别适合使用于数据统计方面。

over()函数写法over(partition by expr2 order by expr3),根据expr2对结果进行分区,在各分区内按照expr3进行排序;

over函数不能单独使用,需要与row_number(),rank()和dense_rank,lag()和lead(),sum()等配合使用。

这三个函数与over连用时order by 不能丢失,不写partition by时默认结果集为一整个分区。

row_number()与over(partition exp2 order by exp3)配合使用可以对分区根据exp1进行排序,此排序是从1开始,即使遇到相同的数据,也区分开来排序。

我写的盘点统计SQL如下:

CREATE OR REPLACE VIEW BARCODE_FG_CHECK_STOCK_AL AS

SELECT S.EDITION AS 盘点版本,

S.SOURCE_CPN AS 型号,

S.QTY AS 盘点总数,

NVL(W.QTY, 0) AS WIP数量,

S.QTY – NVL(W.QTY, 0) AS 差异,

S.SHELF_ID AS 货架编号,

S.SHELF_ID_BACKLOG AS 货架数量,

S.MANTISSA_SHELF_ID AS 尾数架编号,

S.MANTISSA_SHELF_ID_BACKLOG AS 尾数架数量,

S.MANTISSA_CABINET_ID AS 尾数柜编号,

S.MANTISSA_CABINET_ID_BACKLOG AS 尾数柜数量

FROM (SELECT A.EDITION,

A.SOURCE_CPN,

A.QTY,

B.SHELF_ID,

B.SHELF_ID_BACKLOG,

B.MANTISSA_SHELF_ID,

B.MANTISSA_SHELF_ID_BACKLOG,

B.MANTISSA_CABINET_ID,

B.MANTISSA_CABINET_ID_BACKLOG

FROM (SELECT V.EDITION,

M.SOURCE_CPN,

SUM(M.SHELF_ID_BACKLOG) +

SUM(M.MANTISSA_SHELF_ID_BACKLOG) +

SUM(M.MANTISSA_CABINET_ID_BACKLOG) AS QTY

FROM BARCODE_FG_INVENTORY M, BARCODE_FG_INVENTORY_VER V

WHERE M.VER_PTR = V.PKEY

GROUP BY V.EDITION, M.SOURCE_CPN) A,

(select BARCODE_FG_CHECK_STOCK_ALL.SOURCE_CPN,

DECODE(row_number()

OVER(partition by SOURCE_CPN,SHELF_ID ORDER BY SOURCE_CPN),

1,

SHELF_ID) SHELF_ID,

DECODE(row_number() OVER(partition by SOURCE_CPN,SHELF_ID_BACKLOG

ORDER BY SOURCE_CPN),

1,

SHELF_ID_BACKLOG) SHELF_ID_BACKLOG,

DECODE(row_number()

OVER(partition by SOURCE_CPN,MANTISSA_SHELF_ID ORDER BY

SOURCE_CPN),

1,

MANTISSA_SHELF_ID) MANTISSA_SHELF_ID,

DECODE(row_number()

OVER(partition by SOURCE_CPN,MANTISSA_SHELF_ID_BACKLOG

ORDER BY SOURCE_CPN),

1,

MANTISSA_SHELF_ID_BACKLOG) MANTISSA_SHELF_ID_BACKLOG,

DECODE(row_number()

OVER(partition by SOURCE_CPN,MANTISSA_CABINET_ID ORDER BY

SOURCE_CPN),

1,

MANTISSA_CABINET_ID) MANTISSA_CABINET_ID,

DECODE(row_number()

OVER(partition by SOURCE_CPN,MANTISSA_CABINET_ID_BACKLOG

ORDER BY SOURCE_CPN),

1,

MANTISSA_CABINET_ID_BACKLOG) MANTISSA_CABINET_ID_BACKLOG

from BARCODE_FG_CHECK_STOCK_ALL) B

WHERE A.SOURCE_CPN = B.SOURCE_CPN) S,

(SELECT CPN, SUM(QTY_BACKLOG_UNIT) AS QTY

FROM (SELECT SUBSTR(DATA0050.CUSTOMER_PART_NUMBER, 1, 7) AS CPN,

DATA0056.QTY_BACKLOG_UNIT

FROM DATA0056, DATA0006, DATA0050, DATA0034

WHERE DATA0056.WO_PTR = DATA0006.PKEY

AND DATA0006.CUST_PART_PTR = DATA0050.PKEY

AND DATA0056.DEPT_PTR = DATA0034.PKEY

AND DATA0056.QTY_BACKLOG > 0

AND DATA0034.DEPT_CODE = ’24′)

GROUP BY CPN) W

WHERE S.SOURCE_CPN = W.CPN(+)

ORDER BY S.EDITION, S.SOURCE_CPN;

当然,这个并非最终版本,虽然功能都已经实际,不过,对于同一型号有多个货架与多个尾数架的数据时,可能会存在统计不准,这个需要再测试,以后完成盘点功能后再发一个牌本吧。

等等,别走! ^_^

好消息,快手官方发红包啦,登录即送2元,秒提现! 查看详情>>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个快递小伙子带给我们的启示:认真有力量

今天加班一天,合肥漫天飞雪,出门就开始下,到了公司,这个世界全白了,看到了这篇文章,贴出来于大家共享!认真有力量,大家认真努力工作哈! 他是个快递小子,20岁出…

Win32 API串口编程

在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由…

python安装vtk_python - 安装VTK for Python - SO中文参考 - www.soinside.com

最简单的方法第一个也是最简单的方法是使用Aptitude Package Manager安装软件包:sudo apt-get install libvtk5-dev python-vtk如果你想要最新版本如果你想要最新版本的VTK,你也可以自己构建它:确保安装了CMake:sudo apt-get inst…

oracle事务数统计,Oracle 查询事务数

查询“的”首先想到的是v$transaction, 确认这个思路是否正确:执行下面语句:SQL> select * from v$transaction;no rows selectedSQL>发现居然为空,why? 这时恍然大悟,v$transaction记录的是当前事务&#xff0c…

数据库的应用详解三

数据库的应用详解三 数据库的应用详解三 承接上一篇文章:《ADO.NET实例教学二》中设计到的多条件搜索的内容,下面我们就先针对这部分的内容进行深入的讲解。 一、做好准备 在什么情况下会遇到多条件搜索呢?在生活中有没有遇到类似的多条件搜索的情况。在…

arm for asterisk1.8

./configure --hostarm-linux后报错,找不到termcap,于是下载了termcap-1.3.1进行交叉编译。 再次./configure --hostarm-linux后依然报错,找不到libxml2,于是下载了libxml2-2.7.2进行交叉编译。 再次./configure --hostarm-linu…

python可以实现操作系统管理_Python并发编程 —— 操作系统基础

1、手工操作 —— 穿孔卡片1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。特点:(1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。(2)CPU 等待手工操…

oracle经纬度换算成xy坐标,谁有全套经纬度转换成XY坐标的好的软件?

用的实施么地图?标准地形图吗?如果是标准地形图,还是有办法转化的,因为用的是高斯-克吕格投影该投影按照投影带中央子午线投影为直线且长度不变和赤道投影为直线的条件,确定函数的形式,从而得到高斯一克吕格…

数学术语的英汉对照(权威,全面)

abbreviation 简写符号;简写 abscissa 横坐标 absolute complement 绝对补集 absolute error 绝对误差 absolute inequality 绝不等式 absolute maximum 绝对极大值 absolute minimum 绝对极小值 absolute monotonic 绝对单调 absolute value 绝对值 accelerate 加速…

交叉编译ncurses5.6

./configure --hostarm-linux -with-shared -without-debug make

粒子群 多目标 matlab_matlab 粒子群求解三角形垂心位置

续 https://www.toutiao.com/i6766960319995576843/设定三角形A顶点的坐标为 (x1,y1);(x2,y2);(x3,y3);随机初始化;计算得知垂心到三个顶点距离为:R(((x1^2 - 2*x1*x2 x2^2 y1^2 - 2*y1*y2 y2^2)*(x1^2 - 2*x1*x3 x3^2 y1^2 - 2*y1*y3 y3^2)*(x2^2…

php hasmany,浅谈laravel orm 中的一对多关系 hasMany

个人对于laravel orm 中对于一对多关系的理解文章表 article,文章自然可以评论,表 comment 记录文章的评论,文章和评论的关系就是一对多,一篇文章可以有多个评论。 在 comment 表中有字段 article 记录评论所属文章,文…

C类型转换

当执行算术运算时,如果类型不同都会发生类型转换 1、如果整形转换为signed不丢失数据,就转换为signed.否则需要转换为unsigned 如: 一类型为signed int,另一类型为unsigned short,因为signed可以容纳unsigned short的全部值,所以unsigned sho…

python多级字典_Python多层字典取值

#! /usr/bin/python# coding:utf-8"""author:Bingo.hefile: get_target_value.pytime: 2017/12/22"""def get_target_value(key, dic, tmp_list):""":param key: 目标key值:param dic: JSON数据:param tmp_list: 用于存储获取的数…

CSerialPort类定义的消息

CSerialPort类定义的消息 消息名称消息号功能说明WM_COMM_BREAK_DETECTEDWM_USER1检测到输入中断WM_COMM_CTS_DETECTEDWM_USER2检测到CTS(清除发送)信号状态改变WM_COMM_DSR_DETECTEDWM_USER3检测到DSR(数据设置准备就绪)信号状态…

【转】Windows Server2008 R2下安装Oracle 10g

因开发环境需要,在Windows Server 2008 R2 Enterprise64位系统上安装Oracle 10g。去Oracle 官方网站下载了Oracle Database 10g Release 2 (10.2.0.4) for Microsoft Windows Vista x64, Microsoft Windows Server 2008 R2 x64, Windows 7 x64。 可刚执行安装&am…

移植libmxml到(arm-linux)

官方网站 http://www.minixml.org/ 下载源码:mxml-2.6.tar.gz 解压缩: tar -zxvf mxml-2.6.tar 进入目录mxml-2.6后配置属性 ./configure --enable-shared --hostarm-linux make 编译后会出现一个小错误。不用理会,因为目前编译是在A…

mysqlworkbench导入sql文件_将sql脚本文件导入数据库

一、用cmd的调试环境导入.sql文件中的数据:WinR键打开cmd输入:MySQL -u root -p 输入密码:*******进入MySQL后MySQL>show databases; --查看所有数据库MySQL>create database mydatabase; --创建数据库 MySQL>use mydata…

linux创建目录的语句,Linux的 文件 和 目录 管理(基本语句)

包括了文件和目录的创建、删除、修改,权限、压缩、搜索、分区、挂载简单的一些命令:【 pwd 】查看当前所在目录【 cd .. 】上级目录【 cd ~ 】当前用户的家目录【cd -】上次打开目录(回看)【 rmdir 目录名】删除空目录【du -sh 文件或目录】查看文件或目…

win8开发中需要用到一些系统版本之类的统计信息,总结如下。

1.获取软件的版本号,这个比较简单: Package package Package.Current; PackageId packageId package.Id; PackageVersion version packageId.Version; string version String.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build…