inventoryPart:
-partnumber,partDescription,cattoryId,eoq,stickprice, 重新级,Stocklevel,Stockonorder,重量
和
custorderline订单,partnumber,UnitPrice,OrderQuantity,折扣,状态
我只需要返回最昂贵的库存部分的partnumber,partDeScription,股票和类别。 到目前为止,这是我提出的最好的...
SELECT IP.PartNumber, IP.PartDescription, IP.CategoryID, IP.StockPrice
FROM InventoryPart IP, CustOrderLine COL
WHERE IP.PartNumber = COL.PartNumber
AND COL.UnitPrice IN
(SELECT MAX(COL.UnitPrice)
FROM CustOrderLine COL)
此代码的问题是它返回所有类别的最大单位率,而不是按类别分开 我陷入了这个问题,我非常感谢您的帮助。
这样的事情应该使用子查询来使您的
MAX
UITPRICE与每个类别相关联。
SELECT DISTINCT IP.*
FROM InventoryPart IP
JOIN CustOrderLine COL ON IP.PartNumber = COL.PartNumber
JOIN (
SELECT IP.CategoryID, MAX(COL.UnitPrice) MaxPrice
FROM InventoryPart IP INNER JOIN
CustOrderLine COL ON IP.PartNumber = COL.PartNumber
GROUP BY IP.CategoryID
) T ON IP.CategoryId = T.CategoryId AND COL.UnitPrice = T.MaxPrice
the是一个减少的
fiddle,显示了每类单价最高的库存零件。
SELECT a.PartNumber, a.PartDescription, a.CategoryID, a.StockPrice
FROM InventoryPart a
INNER JOIN
(
SELECT PartNumber, MAX(StockPrice) max_price
FROM Inventorypart
GROUP BY PartNumber
) b ON a.partNumber = b.PartNumber AND
a.StockPrice = b.max_price
为了更好的性能,请在列上添加一个
INDEX
(PartNumber, StockPrice)
和
SELECT a.PartNumber, a.PartDescription, a.CategoryID, a.StockPrice
FROM InventoryPart a
INNER JOIN
(
SELECT PartNumber, CategoryID, MAX(StockPrice) max_price
FROM Inventorypart
GROUP BY PartNumber, CategoryID
) b ON a.partNumber = b.PartNumber AND
a.StockPrice = b.max_price AND
a.CategoryID = b.CategoryID