원본 쿼리는 259 개의 행을 반환합니다. 수정 한 후 쿼리는 271 개의 행을 반환합니다. 이 12 개의 행은 중복됩니다. 어떻게 이것을 피할 수 있습니까? 당신의 도움을 주셔서 감사합니다!!쿼리 수정 후 중복 행
쿼리 (굵게 수정) : 나는 대답으로 공식화하려고
select "Item", "Expires", "Lot #", "Subinv", "Locator", "Qty", "UOM", "Lead Time"
,(select count(*) from MTL_KANBAN_CARDS_V kb where exp.inventory_item_id = kb.inventory_item_id and kb.card_status_name <> 'Hold') "Kanban Cards (Not On Hold)"
FROM (
SELECT msi.inventory_item_id
,msi.segment1 "Item"
,mln.expiration_date "Expires"
,mln.lot_number "Lot #"
,moqd.subinventory_code "Subinv"
,mil.segment1 "Locator"
,sum(moqd.primary_transaction_quantity) "Qty"
,msi.primary_uom_code "UOM"
**,muc.conversion_rate "UOM Conversion Rate"**
,msi.FULL_LEAD_TIME "Lead Time"
FROM mtl_system_items_b msi
,mtl_onhand_quantities_detail moqd
,mtl_lot_numbers mln
,mtl_item_locations mil
**,mtl_uom_conversions muc**
WHERE msi.organization_id = 101
AND moqd.inventory_item_id = msi.inventory_item_id
AND moqd.organization_id = msi.organization_id
**AND muc.inventory_item_id (+) = msi.inventory_item_id**
AND mln.inventory_item_id = msi.inventory_item_id
AND mln.organization_id = msi.organization_id
AND mln.lot_number = moqd.lot_number
AND mln.expiration_date <= SYSDATE+365
AND mil.organization_id(+) = moqd.organization_id
AND mil.inventory_location_id(+) = moqd.locator_id
GROUP BY msi.inventory_item_id
,msi.segment1
,mln.expiration_date
,mln.lot_number
,moqd.subinventory_code
,mil.segment1
,msi.primary_uom_code
**,muc.conversion_rate**
,msi.FULL_LEAD_TIME
ORDER BY msi.segment1
,mln.expiration_date
,mln.lot_number) exp
mtl_uom_conversions에 중복 inventory_item_id가 포함되지 않도록 보장합니까? –
나는 이것이 보장된다고 생각하지 않습니다. 나는 IT에 있지 않아 확신 할 수 없다. – ERKSMTY
그들은 'conversion_rate'값이더라도 정확한 복제본입니까? 그렇지 않다면 어느 것을 지키고 싶습니까? (또한 오라클의 기존 구문 대신 현대의 외부 조인 구문을 사용하는 것이 좋습니다. 선택 목록의 하위 쿼리도 이상하게 보입니다. 다른 조인이 될 수는 없습니까?). –