Estoy usando SQL Server 2005. Tengo una tabla de pagos con identificaciones de pago, identificaciones de usuario y marcas de tiempo. Quiero encontrar el pago más reciente para cada usuario. Esto es fácil de buscar y encontrar una respuesta. Lo que también quiero saber es si el pago más reciente es el primer pago del usuario o no.¿Cómo obtener el número máximo de filas por grupo/partición en SQL Server?
Tengo el siguiente que numerar los pagos de cada usuario:
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
No estoy haciendo el salto mental que luego me deja a continuación, elegir la más alta paymentNumber por usuario. Si uso lo anterior como una subselección usando MAX (paymentNumber) y luego agrupando por user_id, pierdo el payment_id que necesito. Pero si también agrego el payment_id en la cláusula group by, vuelvo a una fila por pago. Estoy seguro de que estoy pasando por alto lo obvio. ¿Alguna ayuda?
hay una clave principal en la tabla en absoluto? – DForck42
La clave principal es payment_id. – DaveBurns