ОБНОВЛЕНО
Мне нужно получить спецификацию со всеми компонентами, в настоящее время использую Tc. CK86, но это не дает достаточно информации, поэтому я хочу сделать это с помощью SQL, я работаю с оракулом и не знаю, как это сделать в DB2 R/3, у меня нет доступа к построителю запросов или быстрому просмотру. , но у меня есть доступ для чтения через SQL, сейчас я пытаюсь найти способ получить эту информацию с помощью таблиц:
- Материал MAST для ссылки на спецификацию
- Заголовок спецификации СТКО
- Элемент спецификации STPO
У кого-нибудь из вас есть решение для этого?
В Oracle я сделал что-то вроде следующего:
SELECT DISTINCT LEVEL
,sys_connect_by_path(msil.segment1, ' @ ') AS "BOM TREE"
,msi.segment1
,lpad(' ', LEVEL, '') || msil.segment1 Cod_Component
,msil.item_type
,msil.description Desc_Component
,BIC.component_quantity
,msiL.primary_unit_of_measure
FROM mtl_system_items msi
,bom_bill_of_materials bom
,BOM_INVENTORY_COMPONENTS BIC
,MTL_SYSTEM_ITEMS MSIL
WHERE msi.organization_id = 332
AND BOM.ASSEMBLY_ITEM_ID = MSI.INVENTORY_ITEM_ID
AND BOM.ORGANIZATION_ID = MSI.ORGANIZATION_id
AND bom.bill_sequence_id = bic.bill_sequence_id
AND nvl(bic.disable_date, sysdate) >= SYSDATE
AND BIC.component_ITEM_ID = MSIL.INVENTORY_ITEM_ID
AND Bom.ORGANIZATION_ID = MSIL.ORGANIZATION_ID
AND msil.inventory_item_status_code = 'Active'
AND msi.inventory_item_status_code = 'Active'
connect BY prior bic.component_item_id = bom.assembly_item_id
START WITH msi.segment1 = trim(:parte)
ORDER BY 2
Я пытаюсь сделать следующее, пытаясь сделать его простым, но он дает мне ошибку в строке 18, независимо от того, что я пытаюсь, по-видимому, в DB2 мне нужно, чтобы соединение было после START, в моем рабочем примере оракула он сначала подключился , не знаю, имеет ли это значение, но независимо от того, как я это пишу, это выдает ошибку: ОШИБКА [42601] [IBM][DB2/AIX64] SQL0104N Неожиданный токен PRIOR был обнаружен после ASQ19130 'CONNECT BY. Ожидаемые токены могут включать: PRIOR.
Вот что я получил до сих пор:
SELECT DISTINCT level
,sys_connect_by_path(msil.stlnr, ' @ ') AS "BOM TREE"
,msi.stlnr as parent
--,lpad(' ', LEVEL, '') || MSIL.MATNR Cod_Component
--,lpad(' ', LEVEL, '') || MSIL.MATNR as Cod_Component
,CAST(SPACE((LEVEL - 1) * 4) || '/' || MSIL.MATNR AS VARCHAR(40)) as Cod_Component
,BIC.menge as qty
,bic.stlnr as compnumb
,msiL.mein as uom
FROM
MAST msi
,STKO bom
,STPO BIC
,MAST MSIL
WHERE
BOM.STLNR = MSI.STLNR
AND BIC.STLNR = MSIL.STLNR
START WITH msi.MATNR = 'ASQ19130'
CONNECT BY PRIOR BIC.stlnr = bom.stlnr
order by 2