Domanda

Ho bisogno di creare una domanda che i gruppi da due colonne e restituisce una colonna aggiuntiva in base a una condizione.

Ad esempio, dire che ho le seguenti colonne:

ProductCode | SerialNumber | Quantità | DataAcquisto | CustomerID

e la tabella contiene le combinazioni duplicate di ProductCode e SerialNumber con differenti Quanitites e acquisto date. Mi piacerebbe restituire il ProductCode, SerialNumber e la quantità per la riga con valore più grande (più recente) per DataAcquisto. A complicare ulteriormente le cose questo deve essere fatto per tutte le righe in cui CustomerID = 'xxx'.

Tutte le idee ???

Qualsiasi aiuto apprezzato. Cin cin.

È stato utile?

Soluzione

Supponendo unico DataAcquisto:

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'

Altri suggerimenti

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top