Oracle 11g Запрос отчета - PullRequest
       28

Oracle 11g Запрос отчета

0 голосов
/ 21 февраля 2020

вот мой запрос, я просто хочу получить ITEM_CATEGORY_NAME из моей таблицы Pr_bom_line_washings, но здесь нет данных из этой таблицы, пожалуйста, проверьте мой код и выделите, что не так.

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

1 Ответ

0 голосов
/ 21 февраля 2020

Это слишком долго для комментариев и может помочь решить вашу проблему. Ваш запрос выбирает ITEM_CATEGORY_NAME из II C, а не из 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, и эти строки не отображаются в запросе выше, это означает, что они не имеют совпадений в bl или ssoi или itm. Если вы хотите, чтобы они появились, измените проблему c присоединиться к левому соединению.

...