powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск максимального значения одной строки в разных столбцах
7 сообщений из 7, страница 1 из 1
Поиск максимального значения одной строки в разных столбцах
    #40074180
Greg987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

В моей таблице есть столбцы с датами. До 5 столбцов. В запросе я делаю вычисляемое поле, в котором ищу максимальное значение в этих столбцах, соответственно для каждой строки. MAX и DMAX работают внутри одного столбца. А здесь несколько столбцов.
На текущий момент я делаю это с помощью вложенных IIF и все прекрасно работает. Но получается очень длинное выражение. И это неудобно.

Есть ли какая-то функция, которая позволит найти максимальное значение в одной строке в разных столбцах? Я не нашел, но может плохо искал? Что-то типа DMAX (столбец1, столбец2, столбец3, столбец4, столбец5).
...
Рейтинг: 0 / 0
Поиск максимального значения одной строки в разных столбцах
    #40074187
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Greg987,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public function vbMAX()
dim a as double
a=поле1
if a <поле2 then a=поле2
if a <поле3 then a=поле3
if a <поле4 then a=поле4
if a <поле5 then a=поле5
'may be continue
vbMAX=a
end function

Не понял следующее:Вам нужно максимальное значение столбцов во всех записях(максимум по всей таблице)или в одной записи (ф-ция в примере)
...
Рейтинг: 0 / 0
Поиск максимального значения одной строки в разных столбцах
    #40074212
Greg987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужен максимум именно в одной строке. То есть в запросе есть 3,4 или 5 столбцов с датами и мне нужно выбрать максимальную дату в этих столбцах для каждой строки.

Подскажите пожалуйста, как эту функцию использовать теперь в запросе в вычисляемом поле?
Саму функцию, как я понимаю, нужно закинуть в созданный в vba модуль.

Сейчас для трех полей такое выражение: IIf([1]<=[2]; IIf([1]<=[3]; IIf([2]<=[3]; [3]; [2])); IIf([1]<=[3] ;[3]; [1])) as Поле1
Названия полей я сократил до цифр.
Для пяти полей то же самое выражение, но гораздо больше ифов.

И кстати, переменная а должна быть именно double, с учетом того, что в полях даты?

Спасибо.
...
Рейтинг: 0 / 0
Поиск максимального значения одной строки в разных столбцах
    #40074223
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Greg987
Нужен максимум именно в одной строке.
То есть в запросе есть 3,4 или 5 столбцов с датами и мне нужно
выбрать максимальную дату в этих столбцах для каждой строки.

Если записи имеют уникальный идентификатор, то можно так (без VBA и без IIF):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT Id, Max(D) FROM
(
SELECT Id, D1 AS D FROM Tabl
UNION ALL
SELECT Id, D2 AS D FROM Tabl
UNION ALL
SELECT Id, D3 AS D FROM Tabl
UNION ALL
SELECT Id, D4 AS D FROM Tabl
UNION ALL
SELECT Id, D5 AS D FROM Tabl
)
GROUP BY Id
...
Рейтинг: 0 / 0
Поиск максимального значения одной строки в разных столбцах
    #40074226
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Greg987
....
И кстати, переменная а должна быть именно double, с учетом того, что в полях даты?
...
Переменная может быть и дата/время.При работе с датами учтите это п.3
...
Рейтинг: 0 / 0
Поиск максимального значения одной строки в разных столбцах
    #40074227
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про работу с датами погорячился-это актуально было для А-97(сейчас уже не надо)
...
Рейтинг: 0 / 0
Поиск максимального значения одной строки в разных столбцах
    #40074535
Greg987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

в таблицах у меня есть поле с уникальным идентификатором. Но в запросе получается уникальный идентификатор только в пределах одной даты, а не вообще в запросе.

Но как вариант, можно данные из запроса вставлять в таблицу с уникальным ключом, тогда все заработает.
Я, кстати, попробую. Спасибо Вам большое за вариант.



sdku
Ваш вариант вообще идеален для меня. Спасибо огромное!
И что мне в нем нравится, что легко можно добавлять любое количество сравниваемых дат. Это круто!


Всем спасибо большое!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск максимального значения одной строки в разных столбцах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]