首页 > 解决方案 > Oracle 11g 报表查询

问题描述

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

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

标签: sqloracleoracle11goraclereports

解决方案


评论太长了,可能有助于解决您的问题。您的查询从 IIC 中选择 ITEM_CATEGORY_NAME,而不是从 PBW 中选择,并且您说您希望从 PBW 中选择它。选择之前还有一个逗号,,所以查询在语法上不正确,可能是发帖时的拼写错误。

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

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

如果表中有 id = 677 的bh行并且这些行没有出现在上面的查询中,这意味着它们在blorssoi或中没有匹配项itm。如果您希望他们出现将有问题的加入更改为左加入。


推荐阅读