需要查询前一次该厂商,料号的单价, 这个sql语句很难写,你碰到过没有
要写一个采购报价costdown报表,
是用reports builder 开发,
就是原先的单价的查询PL/SQL 写不出来
如果原先有这个厂商该料号的报价,那么就查出来 ,如果没有,用新报价代替
感觉能写出这样复杂的语句,真不容易,呵呵
[@more@]
/* Formatted on 2006/04/18 16:49 (Formatter Plus v4.8.6) */
SELECT DISTINCT msi.segment1,
poh.segment1
|| '-'
|| pol.line_num
|| '-'
|| poll.shipment_num shipment_num,
poll.quantity - poll.quantity_cancelled quantity,
poh.currency_code, ROUND (pol.unit_price, 4),
ROUND (NVL (poh.rate, 1), 4) rate, pv.vendor_name,
ROUND (NVL (polold.unit_price, pol.unit_price), 4) old_price
FROM po_headers_all poh,
po_lines_all pol,
po_line_locations_all poll,
mtl_system_items_b msi,
po_vendors pv,
po_lines_all polold,
po_vendors pvold,
po_headers_all pohold,
-- po_line_locations_all pollold,
mtl_system_items_b msiold
WHERE poh.po_header_id = pol.po_header_id
AND pol.po_line_id = poll.po_line_id
AND pol.item_id = msi.inventory_item_id
AND pol.org_id = msi.organization_id
AND pol.line_type_id = 1
AND pol.org_id = poh.org_id
AND pol.quantity > 0
AND pol.po_line_id = poll.po_line_id
AND poll.quantity - poll.quantity_cancelled > 0
AND pol.creation_date >= NVL (:p_fromdate, pol.creation_date)
AND pol.creation_date <= NVL (:p_todate, pol.creation_date)
AND poh.segment1 >= NVL (:p_fromsegment1, poh.segment1)
AND poh.segment1 <= NVL (:p_tosegment1, poh.segment1)
AND poh.org_id = NVL (:p_orgid, 141)
AND poh.vendor_id = pv.vendor_id
AND pvold.vendor_id = pv.vendor_id
AND msi.inventory_item_id = msiold.inventory_item_id
AND pohold.po_header_id = polold.po_header_id
AND polold.item_id = msiold.inventory_item_id
AND polold.line_type_id = 1
AND polold.org_id = pohold.org_id
AND pohold.currency_code = poh.currency_code
AND pohold.segment1 >= NVL (:p_fromsegment1, pohold.segment1)
AND pohold.segment1 <= NVL (:p_tosegment1, pohold.segment1)
AND polold.creation_date =
(SELECT MAX (poln.creation_date)
FROM po_lines_all poln,
po_headers_all pohn,
mtl_system_items_b msin,
po_vendors pvn
WHERE pohn.po_header_id = poln.po_header_id
AND poln.item_id = msin.inventory_item_id
AND pvn.vendor_id = pvold.vendor_id --58
AND msin.inventory_item_id = msiold.inventory_item_id
--62996
-- AND poln.item_id = msin.organization_id
AND pohn.currency_code = pohold.currency_code
AND pohn.segment1 >=
NVL (:p_fromsegment1, pohn.segment1)
AND pohn.segment1 <= NVL (:p_tosegment1, pohn.segment1)
AND poln.line_type_id = 1
AND poln.org_id = pohn.org_id
AND poln.creation_date >=
TRUNC (ADD_MONTHS (:p_fromdate, -6),
'month')
AND poln.creation_date <=
LAST_DAY (ADD_MONTHS (:p_fromdate, -1)))
ORDER BY pv.vendor_name, msi.segment1, poh.currency_code
最终上线的:
/* Formatted on 2006/04/19 13:48 (Formatter Plus v4.8.6) */
SELECT DISTINCT msi.segment1,
poh.segment1
|| '-'
|| pol.line_num
|| '-'
|| poll.shipment_num shipment_num,
poll.quantity - poll.quantity_cancelled quantity,
poh.currency_code, ROUND (pol.unit_price, 4) new_price,
ROUND (NVL (poh.rate, 1), 4) rate, pv.vendor_name,
ROUND (NVL (polold.unit_price, pol.unit_price), 4) old_price,
ROUND (NVL (polold.unit_price, pol.unit_price)
- pol.unit_price,
4
) costdowny,
ROUND ( NVL (polold.unit_price, pol.unit_price)
- pol.unit_price,
4
)
* ROUND (NVL (poh.rate, 1), 4) costdownb,
ROUND ( (poll.quantity - poll.quantity_cancelled)
* pol.unit_price,
4
)
* ROUND (NVL (poh.rate, 1), 4) purchase_total,
( ROUND ( (poll.quantity - poll.quantity_cancelled)
* NVL (polold.unit_price, pol.unit_price),
4
)
- ROUND ( (poll.quantity - poll.quantity_cancelled)
* pol.unit_price,
4
)
)
* ROUND (NVL (poh.rate, 1), 4) costdown_totalb,
papf.full_name, DECODE (pol.org_id,
0, 'MST',
141, 'NGB'
) org
FROM po_headers_all poh,
po_lines_all pol,
po_line_locations_all poll,
mtl_system_items_b msi,
po_vendors pv,
po_lines_all polold,
po_vendors pvold,
po_headers_all pohold,
-- po_line_locations_all pollold,
mtl_system_items_b msiold,
per_all_people_f papf
WHERE poh.po_header_id = pol.po_header_id
AND pol.po_line_id = poll.po_line_id
AND pol.item_id = msi.inventory_item_id
AND pol.org_id = msi.organization_id
AND pol.line_type_id = 1
AND pol.org_id = poh.org_id
AND pol.quantity > 0
AND pol.po_line_id = poll.po_line_id
AND poll.quantity - poll.quantity_cancelled > 0
AND pol.creation_date >= NVL (:p_fromdate, pol.creation_date)
AND pol.creation_date <= NVL (:p_todate, pol.creation_date)
AND poh.segment1 >= NVL (:p_fromsegment1, poh.segment1)
AND poh.segment1 <= NVL (:p_tosegment1, poh.segment1)
AND poh.org_id = NVL (:p_orgid, 141)
AND poh.vendor_id = pv.vendor_id
AND pvold.vendor_id = pv.vendor_id
AND msi.inventory_item_id = msiold.inventory_item_id
AND pohold.po_header_id = polold.po_header_id
AND polold.item_id = msiold.inventory_item_id
AND polold.line_type_id = 1
AND polold.org_id = pohold.org_id
AND pohold.currency_code = poh.currency_code
AND pohold.segment1 >= NVL (:p_fromsegment1, pohold.segment1)
AND pohold.segment1 <= NVL (:p_tosegment1, pohold.segment1)
AND poh.agent_id = papf.person_id
AND papf.business_group_id = NVL (:p_orgid, 141)
AND papf.full_name like NVL(:p_full_name, papf.full_name )
AND polold.creation_date =
(SELECT MAX (poln.creation_date)
FROM po_lines_all poln,
po_headers_all pohn,
mtl_system_items_b msin,
po_vendors pvn
WHERE pohn.po_header_id = poln.po_header_id
AND poln.item_id = msin.inventory_item_id
AND pvn.vendor_id = pvold.vendor_id --58
AND msin.inventory_item_id = msiold.inventory_item_id
--62996
-- AND poln.item_id = msin.organization_id
AND pohn.currency_code = pohold.currency_code
AND pohn.segment1 >=
NVL (:p_fromsegment1, pohn.segment1)
AND pohn.segment1 <= NVL (:p_tosegment1, pohn.segment1)
AND poln.line_type_id = 1
AND poln.org_id = pohn.org_id
AND poln.creation_date >=
TRUNC (ADD_MONTHS (:p_fromdate, -6),
'month')
AND poln.creation_date <=
LAST_DAY (ADD_MONTHS (:p_fromdate, -1)))
ORDER BY pv.vendor_name, msi.segment1, poh.currency_code
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/226700/viewspace-828279/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/226700/viewspace-828279/
需要查询前一次该厂商,料号的单价, 这个sql语句很难写,你碰到过没有相关推荐
- Mysql实现文章查询上一篇和下一篇功能,附sql语句?
mysql实现文章查询上一篇和下一篇功能,附sql语句? 最近在做一个项目用到的文章查询上一篇和下一篇功能,详见:http://www.yifen5.com Mysql实现文章查询上一篇和下一篇功能, ...
- mysql查询某一时间段之后数据的sql_mysql进阶(十九)SQL语句如何精准查找某一时间段的数据...
SQL语句如何精准查找某一时间段的数据 在项目开发过程中,自己需要查询出一定时间段内的交易.故需要在sql查询语句中加入日期时间要素,sql语句如何实现? SELECT * FROM lmapp.lm ...
- mysql 查询执行过的sql_查看mysql已经执行过的sql语句
概述 很多时候,我们需要知道 MySQL 执行过哪些 SQL 语句,比如 MySQL 被注入后,需要知道造成什么伤害等等.只要有 SQL 语句的记录,就能知道情况并作出对策.服务器是可以开启 MySQ ...
- node输出mysql的数据_node.js+async+mysql 查询数据输出问题,如何分别统计、提取每个sql语句的结果!!...
展开全部 首先这是一个很简单的问e5a48de588b63231313335323631343130323136353331333335343366题,cnodejs这个论坛node大神算是最多的了, ...
- Mybatis中模糊查询的SQL语句应该怎么写?
第一种实现方式'%${value}%' select * from user where username like '%${value}%' 缺点:字符串拼接存在sql注入问题 sql注入问题可以参 ...
- 模糊查询SQL语句 该怎么写
String sql = "SELECT * FROM food WHERE foodName LIKE ?"; return qr.query(sql, new BeanList ...
- 玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!
sql语句group by使用详解 group by的基本语法 基本语法 什么是分组查询(一个字段) 多个字段的分组查询 1.两个字段的分组查询 2.三个字段及N个字段进行分组查询 having子句的 ...
- 单表无条件和有条件查询的SQL语句
话不多说,直接上实验4 简单查询-单表无条件和有条件查询的SQL语句------------ (1) 查询所有学生的基本信息.所有课程的基本信息和所有学生的成绩信息(用三条SQL语句). SELECT ...
- oracle阻塞查询,oracle 查询阻塞的sql语句
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 session1: create table t_all_objs as select owner,object_id,object_name from ...
- 在JDBC中实现SQL语句的模糊查询
在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...
最新文章
- 从HarmonyOS应用到底是不是Android套壳?
- 《白发魔女传》里面的一首诗
- 【杂谈】2020年如何长期、系统,全面地学习深度学习和计算机视觉,这是有三AI的完整计划...
- Python中使用高德API实现经纬度转地名
- c语言输入整数要求输出字符,求C语言 将输入整数转换成字符串输出!
- 统一配置数据库连接符的方法
- MyCat分布式数据库集群架构工作笔记0004---Mycat的实现原理
- 百万数据php7取出循环_Thinkphp5 分批批量导出百万条数据记录的Code,不用PHPEXCEL哦!...
- PCB BOM也能如此好看?图形化交互式BOM工具Interactive Html Bom使用分享
- mysql主从之slave-skip-errors和sql_slave_skip_counter
- 学三菱plc编程应该先学什么?
- Autodesk 首届开发者训练营所有讲座课程介绍(包括云,建筑,机械,多媒体以及娱乐几个大方向)
- C语言将字符串转换为数字
- 视频图像传输与显示(2)——彩色模拟电视广播制式NTSC、PAL和SECAM
- 蔬菜图片的类型识别系统【基于MobileNetV3模型】
- stanfordnlp使用自定义分词分句
- Java集合可分成什么类_java.util包含Java中大量工具类、集合类等,例如Arrays、List、Set等。...
- MirSNP:miRNA相关SNP位点数据库
- android微信登录用户绑定,微信授权登陆接入第三方App(步骤总结)Android
- Windows 8系统中LOL登陆错误出现的服务器未响应怎么处理?