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.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top