首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle 11g报告查询

Oracle 11g报告查询
EN

Stack Overflow用户
提问于 2020-02-21 14:48:50
回答 1查看 40关注 0票数 0

这是我的查询,我只是想从我的表Pr_bom_line_washings中获取ITEM_CATEGORY_NAME,但这里没有来自该表的数据,请检查我的代码并突出显示错误之处。

代码语言:javascript
复制
SELECT distinct itm.ITEM_CODE P_Code,
       itm.ITEM_DESC P_Desc,
       itm.UOM P_UOM,
       NVL (ssoi.QTY, 0) qty,
       bh.REMARKS,
      (  NVL (bl.QTY, 0)
        * (SELECT NVL (last_grn_rate, 0)
             FROM inv_items
            WHERE item_id = bl.ITEM_ID))
          amount,
       NVL (bl.amount, 0) child_amount,
       IIC.ITEM_CATEGORY_NAME  Mat_Cat,
       DECODE (bl.PURCHASING,  'Y', 'Yes',  'N', 'No') Purchase,
       bl.ITEM_BY_SIZE,
  FROM pr_bom_headers bh,
       pr_bom_lines bl,
       pr_bom_sub_lines bsl,
       sm_Sale_order_items ssoi,
       inv_items itm,
       Pr_bom_line_washings pbw,
       INV_ITEM_CATEGORIES iic
 WHERE     bh.BOM_HEADER_ID = bl.BOM_HEADER_ID
       AND bl.BOM_LINE_ID = bsl.BOM_LINE_ID(+)
       AND bh.ITEM_ID = itm.ITEM_ID
       AND SSOI.SALE_ORDER_ID = BH.SALE_ORDER_ID
       and BH.BOM_HEADER_ID = PBW.BOM_HEADER_ID
       and BL.MATERIAL_CAT = IIC.ITEM_CATEGORY_ID(+)
       and PBW.MATERIAL_CAT = IIC.ITEM_CATEGORY_ID(+)
       and BH.BOM_HEADER_ID= 677
&qr
EN

回答 1

Stack Overflow用户

发布于 2020-02-21 19:02:05

这篇评论太长了,可能会帮助你解决问题。您的查询从IIC中选择ITEM_CATEGORY_NAME,而不是从PBW中选择,并且您说您希望从PBW中获取它。此外,select前有一个逗号,,因此查询在语法上是不正确的,可能是发布时的拼写错误。

只显示对joins很重要的列,将旧式joins更改为ansi标准,这样您将清楚地看到joins是如何工作的:

代码语言:javascript
复制
select  bh.bom_header_id,
        bl.bom_header_id,
        ssoi.sale_order_id,
        itm.item_id,
        bl.material_cat,
        iic.item_category_id, 
        pbw.material_cat,
        pbw.item_category_name
  from  pr_bom_headers                  bh 
             join pr_bom_lines          bl    on  bl.bom_header_id = bh.bom_header_id 
        left join pr_bom_sub_lines      bsl   on  bsl.bom_line_id = bl.bom_line_id
             join sm_sale_order_items   ssoi  on  ssoi.sale_order_id = bh.sale_order_id
             join inv_items             itm   on  itm.item_id = bh.item_id
        left join inv_item_categories   iic   on  iic.item_category_id = bl.material_cat
        left join pr_bom_line_washings  pbw   on  pbw.material_cat = iic.item_category_id
  where bh.bom_header_id = 677

如果表bh中有id = 677的行,而这些行没有出现在上面的查询中,这意味着它们在blssoiitm中没有匹配项。如果您希望它们出现,请将有问题的join更改为left join。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60333445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档