Sto utilizzando SQL Server 2005. Dispongo di una tabella di pagamenti con ID di pagamento, ID utente e data e ora. Voglio trovare il pagamento più recente per ciascun utente. È facile cercare e trovare una risposta. Quello che voglio anche sapere è se il pagamento più recente è il primo pagamento dell'utente o meno.Come ottenere il numero massimo di righe per gruppo/partizione in SQL Server?
ho il seguente che numerare i pagamenti di ciascun utente:
SELECT
p.payment_id,
p.user_id,
ROW_NUMBER() OVER (PARTITION BY p.user_id ORDER BY p.payment_date) AS paymentNumber
FROM
payment p
Non sto facendo il salto mentale che poi mi permette poi a scegliere il più alto paymentNumber per utente. Se utilizzo il suddetto come sottoselezione usando MAX (paymentNumber) e poi raggruppando per user_id, perdo il payment_id di cui ho bisogno. Ma se aggiungo anche il payment_id al gruppo per clausola, torno a una riga per pagamento. Sono sicuro che sto trascurando l'ovvio. Qualsiasi aiuto?
c'è una chiave primaria nella tabella a tutti? – DForck42
La chiave primaria è payment_id. – DaveBurns