Leider eine andere Variante der beliebten "Greatest-N-Per-Group" Abfrage, aber es hat meinen Hintern getreten und ich könnte wirklich Klarheit gebrauchen (Problem vereinfacht) so viel wie möglich):Größte N pro Gruppe mit Joins: Falsche Max/Min Werte erhalten
ich zwei Tabellen haben:
Items
-----
ItemID
ProductName
Inventory
---------
InventoryID
ItemID
Condition
Price
und ich versuche, eine Abfrage zu formulieren, die zeigt die InventoryID, ItemID, ItemName, Zustand und Maxpreise für jeden Artikel In einer gegebenen Bedingung
dh gegeben
Inventory
---------
InventoryID ItemID Condition Price
INV123 ITEM001 NEW $3.99
INV001 ITEM001 NEW $3.79
INV031 ITEM001 USED $1.23
INV234 ITEM001 USED $1.99
und Artikel:
ItemID ItemName
ITEM001 Lg Widget
ITEM002 Sm Widget
ich erwarten würde:
ItemID ItemName Condition MaxPrice MaxPriceInventoryID
ITEM001 Lg Widget NEW $3.99 INV123
ITEM001 Lg Widget USED $1.99 INV234
Ich versuche dies:
SELECT
ItemID, ItemName, b.condition, b.maxprice,
InventoryID as MaxPriceInventoryID
FROM
Items I join inventory v On i.ItemID= v.ItemID
join (
select inventory.ItemID, max(Price) as MaxPrice, condition
from inventory join Items on inventory.ItemID = Items.ItemID
group by inventory.ItemID, condition) as b
on b.ItemID = v.ItemID and b.MaxPrice = v.Price
ORDER BY
ItemName, Condition
Leider doesn diese‘ t das gewünschte ergebnis geben: es scheint sporadisch zu sein Max-Preis für den Artikel über alle Bedingungen, nicht Max-Preis für den Artikel in einer bestimmten Bedingung drehen
Ideen?