我正在撰寫一個查詢,我想從視圖中選擇PartNo、Description、Model和AvaQty。
但在我們的系統中,相同零件編號的描述或型號略有不同。
例如,A 部分具有類似“這是 A部分”的描述,并且還有另一條描述記錄,例如“這是 Aa 部分”
在我的查詢中,我想洗掉重復項并對 Ava Qty 求和并顯示。但是因為相同零件號的描述和型號不同,所以我在最終報告中得到了更多的重復值。
這是我目前的代碼。
SELECT DISTINCT PART_NO as PartNo,
ad.INVENTORY_PART_API.Get_Description(contract,part_no) as PartDescription,
ad.Inventory_Product_Family_API.Get_Description(ad.Inventory_Part_API.Get_Part_Product_Family(CONTRACT, PART_NO)) as PartModel,
SUM( QTY_ONHAND - QTY_RESERVED) as AvaQty
FROM ad.INVENTORY_PART_IN_STOCK_UIV
WHERE CONTRACT is not null and
upper(ad.Sales_Part_API.Get_Catalog_Group(CONTRACT, PART_NO)) = upper('SPAM')OR
upper(ad.Sales_Part_API.Get_Catalog_Group(CONTRACT, PART_NO)) = upper('OTOA')
GROUP BY PART_NO,
ad.INVENTORY_PART_API.Get_Description(contract,part_no),
ad.Inventory_Product_Family_API.Get_Description(ad.Inventory_Part_API.Get_Part_Product_Family(CONTRACT, PART_NO))
所以我得到了 14623 條記錄,有 46 條記錄重復,因為描述或模型彼此不同。那么有沒有辦法在不復制它的情況下獲得它?
我嘗試不選擇描述和模型。僅選擇零件編號和數量。然后記錄沒有重復記錄。需要知道有沒有辦法選擇PartNo,然后從重復值第一條記錄或其他東西和數量總和中分配描述和模型。謝謝
uj5u.com熱心網友回復:
您希望每個零件編號有一個結果行,因此請按零件編號分組。每個零件編號可能有不同的描述,因此請決定顯示哪個。下面,我顯示了字母表中的第一個 ( MIN)。您還可以使用MAX來顯示最新的或LISTAGG全部顯示。
SELECT
part_no AS partno,
MIN(ad.inventory_part_api.get_description(contract,part_no)) AS partdescription,
MIN(ad.inventory_product_family_api.get_description(ad.inventory_part_api.get_part_product_family(contract, part_no))) AS partmodel,
SUM(qty_onhand - qty_reserved) AS avaqty
FROM ad.inventory_part_in_stock_uiv
WHERE contract IS NOT NULL
AND UPPER(ad.sales_part_api.get_catalog_group(contract, part_no)) IN ('SPAM', 'OTOA')
GROUP BY part_no
ORDER BY part_no;
至于你的WHERE條款:你有WHERE (contract IS NOT NULL AND catgrp = 'SPAM') OR (catgrp = 'OTOA'),因為AND優先于OR。在我的查詢中它是WHERE (contract IS NOT NULL) AND (catgrp = 'SPAM' OR catgrp = 'OTOA'). 我想這就是你真正想要的。否則改回來。
uj5u.com熱心網友回復:
我會通過使用分析函式來解決這個任務。例如,SUM(qty_onhand - qty_reserved) OVER (PARTITION BY PART_NO)。在這種情況下,您不必使用GROUP BY.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/387382.html
