Immaginate Ho le seguenti 3 tavoli in SqlServer:più recenti record in una sinistra unirsi
Customer (CustomerID, FirstName, LastName)
Address (AddressID, CustomerID, Line1, City, State)
Product (ProductID, CustomerID, Description)
Un cliente può avere più indirizzi di consegna e prodotti mulitple.
Quello che mi piacerebbe fare è elencare il numero di clienti per ogni Stato in cui lo Stato è determinato dal record di indirizzo più recente. Ad esempio: "Quanti clienti hanno ricevuto in ultimo un prodotto in ciascuno Stato?". Pertanto non sono interessato a nessun record di indirizzo precedente per il cliente, solo il più recente (determinato da AddressID).
State | Number of Customers
--------------------------
CA | 32
GA | 12
TX | 0
OH | 18
io normalmente fare qualcosa di simile:
SELECT a.State, count(c.CustomerID)
FROM Product p
INNER JOIN Customer c ON c.CustomerID = p.CustomerID
LEFT JOIN Address a ON a.CustomerID = c.CustomerID
WHERE p.ProductID = 101
GROUP BY a.State
Tuttavia, come un cliente può avere più indirizzi sarà il cliente viene conteggiato solo nello Stato della più recente record di indirizzo?
P.S. Quanto sopra è puramente uno scenario di esempio per spiegare facilmente i join che sto cercando di raggiungere e che non riflette un design di sistema reale.
Proprio quello che stavo cercando, molte grazie. –
Ottimo! ora, perché non ci ho pensato! –
Questo era pulito. Complimenti a te. –