Я использую SQL Server 2005. У меня есть таблица платежей с идентификаторами платежа, идентификаторами пользователя и отметками времени. Я хочу найти самую последнюю оплату для каждого пользователя. Это легко найти и найти ответ. Однако я также хочу знать, является ли последний платеж первым платежом пользователя или нет.
У меня есть следующее, которое будет указывать каждый пользовательский платеж:
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
Я не делаю умственного прыжка, который затем позволяет мне выбрать самый высокий номер платежа для каждого пользователя. Если я использую вышеуказанное как подзапрос, используя MAX (номер платежа), а затем группируя по user_id, я теряю нужный мне payment_id. Но если я также добавлю payment_id в предложение group by, я вернусь к одной строке за платеж. Я уверен, что я упускаю из виду очевидное. Любая помощь?