Это пример таблицыSQL SERVER QUERY, чтобы выбрать максимальное значение записи за единицу
Что мне нужно добиться того, чтобы получить или отображать только запись арендатора с наибольшим значением месяца. Если месяц равен, я должен основываться на последнем значении даты. Здесь образец требуемого выходного
С этим, я начал с этим кодом, используя максимальную функцию и временную таблицу включено, но не в состоянии получить желаемый результат.
select tenant, name, date, month
into #sample
from tenant
select *
from #sample
where months = (select max(months)from #sample)
и выводят что-то вроде этого. Как я считаю, код получает максимальное значение во всем списке, не учитывающем фильтрацию арендатора.
Любая помощь будет принята с благодарностью :)
Это работало. Могу ли я просто спросить, всегда ли он возвращается к 1? – rickyProgrammer
Для каждого отдельного набора 'tenant/name' (' partition by' clause) функция 'row_number' будет последовательно содержать строки' 1,2,3,4, ... ', * всегда начиная с' 1' *, используя опцию 'order by' для определения последовательности. Итак, поскольку в предложении 'order by' задано' t.months desc, t.date desc' для каждой комбинации «арендатор/имя», строка с наибольшим значением «месяцев» (и последняя «дата», если больше чем одна строка имеет одно и то же значение «месяцев») будет иметь значение 'rn'' 1'. – sstan
Чтобы лучше понять это, попробуйте запустить подзапрос самостоятельно, чтобы вы могли видеть значения 'rn' для всех строк. – sstan