2016-12-20 10 views
1

元のクエリは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 
+0

mtl_uom_conversionsに重複したinventory_item_idが含まれていないことが保証されますか? –

+0

私はこれが保証されているとは思わない。私はITにはないので、確信が持てません。 – ERKSMTY

+0

「conversion_rate」の値であっても、それらは正確に重複していますか?もしあなたが保持したいと思わない? (また、Oracleの古い構文ではなく、現代の外部結合構文の使用を検討する必要があります。選択リストの副問合せも奇妙に見えますが、別の結合ではありませんか? –

答えて

1

私は答えとして、それを策定しよう:

13の項目については、そこに特定のinventory_item_idに複数のconversion_rate値であり、それはですクエリーをmtl_uom_conversionsで拡張すると、なぜこれらの追加の行が輝きますか?

あなたがそれらすべてを持ってしたくない場合、あなたはどちらかの可能性...

(1)これらの重複を削除。 DB内のデータが不一致/冗長であるように見えるので、これはOKだと思います。

(2)group by節からmuc.conversion_rateを削除し、min(muc.conversion_rate)を(inner)select句に追加します。あなたはMAXなどを使用することもできますが、より多くの値を持っていても1つしか必要ない場合は、どちらかを選択する必要があります:-)

+0

ありがとう、スティーブン! – ERKSMTY

+0

答えをアップアップしようとしましたが、評判が低いためにロックアウトされています。私はあなたに金の赤いレッドを与えることができれば願っています。 – ERKSMTY

+0

あなたは答えを受け入れることができます。実際に私はどのように分かっていない:-) –

関連する問題