要写一个采购报价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语句很难写,你碰到过没有相关推荐

  1. Mysql实现文章查询上一篇和下一篇功能,附sql语句?

    mysql实现文章查询上一篇和下一篇功能,附sql语句? 最近在做一个项目用到的文章查询上一篇和下一篇功能,详见:http://www.yifen5.com Mysql实现文章查询上一篇和下一篇功能, ...

  2. mysql查询某一时间段之后数据的sql_mysql进阶(十九)SQL语句如何精准查找某一时间段的数据...

    SQL语句如何精准查找某一时间段的数据 在项目开发过程中,自己需要查询出一定时间段内的交易.故需要在sql查询语句中加入日期时间要素,sql语句如何实现? SELECT * FROM lmapp.lm ...

  3. mysql 查询执行过的sql_查看mysql已经执行过的sql语句

    概述 很多时候,我们需要知道 MySQL 执行过哪些 SQL 语句,比如 MySQL 被注入后,需要知道造成什么伤害等等.只要有 SQL 语句的记录,就能知道情况并作出对策.服务器是可以开启 MySQ ...

  4. node输出mysql的数据_node.js+async+mysql 查询数据输出问题,如何分别统计、提取每个sql语句的结果!!...

    展开全部 首先这是一个很简单的问e5a48de588b63231313335323631343130323136353331333335343366题,cnodejs这个论坛node大神算是最多的了, ...

  5. Mybatis中模糊查询的SQL语句应该怎么写?

    第一种实现方式'%${value}%' select * from user where username like '%${value}%' 缺点:字符串拼接存在sql注入问题 sql注入问题可以参 ...

  6. 模糊查询SQL语句 该怎么写

    String sql = "SELECT * FROM food WHERE foodName LIKE ?"; return qr.query(sql, new BeanList ...

  7. 玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!

    sql语句group by使用详解 group by的基本语法 基本语法 什么是分组查询(一个字段) 多个字段的分组查询 1.两个字段的分组查询 2.三个字段及N个字段进行分组查询 having子句的 ...

  8. 单表无条件和有条件查询的SQL语句

    话不多说,直接上实验4 简单查询-单表无条件和有条件查询的SQL语句------------ (1) 查询所有学生的基本信息.所有课程的基本信息和所有学生的成绩信息(用三条SQL语句). SELECT ...

  9. oracle阻塞查询,oracle 查询阻塞的sql语句

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 session1: create table t_all_objs as select owner,object_id,object_name from ...

  10. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

最新文章

  1. 从HarmonyOS应用到底是不是Android套壳?
  2. 《白发魔女传》里面的一首诗
  3. 【杂谈】2020年如何长期、系统,全面地学习深度学习和计算机视觉,这是有三AI的完整计划...
  4. Python中使用高德API实现经纬度转地名
  5. c语言输入整数要求输出字符,求C语言 将输入整数转换成字符串输出!
  6. 统一配置数据库连接符的方法
  7. MyCat分布式数据库集群架构工作笔记0004---Mycat的实现原理
  8. 百万数据php7取出循环_Thinkphp5 分批批量导出百万条数据记录的Code,不用PHPEXCEL哦!...
  9. PCB BOM也能如此好看?图形化交互式BOM工具Interactive Html Bom使用分享
  10. mysql主从之slave-skip-errors和sql_slave_skip_counter
  11. 学三菱plc编程应该先学什么?
  12. Autodesk 首届开发者训练营所有讲座课程介绍(包括云,建筑,机械,多媒体以及娱乐几个大方向)
  13. C语言将字符串转换为数字
  14. 视频图像传输与显示(2)——彩色模拟电视广播制式NTSC、PAL和SECAM
  15. 蔬菜图片的类型识别系统【基于MobileNetV3模型】
  16. stanfordnlp使用自定义分词分句
  17. Java集合可分成什么类_java.util包含Java中大量工具类、集合类等,例如Arrays、List、Set等。...
  18. MirSNP:miRNA相关SNP位点数据库
  19. android微信登录用户绑定,微信授权登陆接入第三方App(步骤总结)Android
  20. Windows 8系统中LOL登陆错误出现的服务器未响应怎么处理?

热门文章

  1. ESP-MESH 无线组网,让智能家居通信更方便 | ESP32轻松学(Arduino版)
  2. 2012年第19周限时免费应用点评
  3. 男生追女生的方法有哪些?
  4. 【第一组】第十六次冲刺例会纪要
  5. mysql感觉表头对不齐_表头固定为什么对不齐?
  6. CoffeeScript基础
  7. 触动人心:如何设计优秀的iPhone应用
  8. 在IntelliJ下如何做parameterize method的重构
  9. 十则:程序员“笑话”据说只有真正的程序员才看得懂
  10. Maya模型Fbx材质有贴图却不显示