Мне сложно интерпретировать вашу таблицу, но в SQL есть встроенные функции, которые помогут в ваших запросах.
SELECT MAX(column1), MAX(column2)
FROM table_name
WHERE condition;
Я бы использовал order by
:
select column1, column2
from t
order by column1 desc, column2 desc
fetch first 1 row only;
Я вижу, вы используете MS Access, поэтому это сформулировано так:
select top (1) column1, column2
from t
order by column1 desc, column2 desc;
Единственная проблема с этим подходом заключается в том, что он может вернуть несколько строк, если у вас есть дубликаты в данных. Если это проблема, включите уникальный идентификатор в качестве последнего ключа в order by
:
order by column1 desc, column2 desc, id;
Или используйте агрегацию:
select max(column1), max(column2)
from (select top (1) column1, column2
from t
order by column1 desc, column2 desc
) as t;
max()
служит только для уменьшения набора результатов до одной строки (в случае дублирования). Поскольку все значения из подзапроса будут одинаковыми, подойдет практически любая функция агрегирования.
Для ваших образцов данных это будет работать:
SELECT Column1, Column2
FROM yourTable
WHERE Column1 = (SELECT MAX(Column1) FROM yourTable)
На основании вашего комментария
and after that the max of column2
Вы, вероятно, захотите это вместо этого:
SELECT Column1, MAX(Column2) as Column2
FROM yourTable
WHERE Column1 = (SELECT MAX(Column1) FROM yourTable)
GROUP BY Column1
Это обрабатывает случаи, когда имеется несколько строк с MAX(Column1)
, и возвращает только строку среди строк с MAX(Column2)
.
Если вам нужна вся строка с максимальным значением column1
, попробуйте это ...
SELECT TOP 1 *
FROM tablename
ORDER BY column1 DESC
Дата образца
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| 1 | 1 |
| 3 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
+---------+---------+
Выход
+----------+----------+
| Column1 | Column2 |
+----------+----------+
| 3 | 2 |
+----------+----------+
если вам нужны максимальные значения как column1
, так и column2
, попробуйте это ...
SELECT MAX(column1) as column1,
MAX(column2) as column2
FROM tablename
Дата образца
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| 1 | 1 |
| 3 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
+---------+---------+
Выход
+----------+----------+
| Column1 | Column2 |
+----------+----------+
| 3 | 4 |
+----------+----------+
Если вы хотите получить максимум для столбцов 1 и 2, на выходе должно быть 3 | 4, так должно быть?