Rückkehr zum Teil deutliche / eindeutige Zeilen
Frage
Ich brauche eine Abfrage, die Gruppen von zwei Spalten erstellen und eine zusätzliche Spalte zurückgibt, basierend auf einer Bedingung.
Zum Beispiel, sagen, ich habe die folgenden Spalten bekommen:
Productcode | Serial | Anzahl | DatePurchased | CustomerID
und die Tabelle enthält doppelte Kombinationen von Productcode und Serial mit Quanitites unterschiedlichen und Terminen Kauf. Ich mag den Productcode, Serial und die Menge für die Zeile mit dem größten (jüngstem) Wert für DatePurchased zurückzukehren. Um die Dinge weiter komplizieren muss dies für alle Zeilen, in denen CustomerID = ‚xxx‘ erfolgen.
Irgendwelche Ideen ???
Jede Hilfe sehr geschätzt. Prost.
Lösung
Unter der Annahme, einzigartige DatePurchased:
SELECT a.*
FROM Table as a
JOIN (
SELECT ProductCode, SerialNumber, MAX(DatePurchased) as MaxDate
FROM Table
GROUP BY ProductCode, SerialNumber
) as b ON
a.ProductCode = b.ProductCode
AND a.SerialNumber = b.SerialNumber
AND a.DatePurchased = b.MaxDate
WHERE
a.CustomerID = 'xxx'
Andere Tipps
SELECT
T1.ProductCode,
T1.SerialNumber,
T1.Quantity
FROM
Some_Table T1
LEFT OUTER JOIN Some_Table T2 ON
T2.ProductCode = T1.ProductCode AND
T2.SerialNumber = T1.SerialNumber AND
T2.CustomerID = T1.CustomerID AND
T2.DatePurchased > T1.DatePurchased
WHERE
T1.CustomerID = 'xxx' AND
T2.ProductCode IS NULL