powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / LEAST & GREATEST в Cache - как?
3 сообщений из 3, страница 1 из 1
LEAST & GREATEST в Cache - как?
    #35837274
Glebanski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет

Не смог найти функцию, которая бы в sql запросе возвращала мин или макс значение из двух принятых параметров.
Неужели придется везде писать CASE WHEN col1 > col2 the col1 else col2 end?
...
Рейтинг: 0 / 0
LEAST & GREATEST в Cache - как?
    #35837575
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встроенных функций нет, но можно написать свои собственные. Все зависит от того, как Вы вызываете запрос:

1) встроенный SQL

Можно использовать макросы, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#define GREATEST(%a,%b) CASE WHEN %a > %b then %a else %b end

;вызов
&sql(declare c cursor for select $$$GREATEST(id, 8 ) from test.mytable for read only)
&sql(open c)
for  {
  &sql(fetch c into :res)
  q:SQLCODE
  w res,!
}
&sql(close c)

2) динамический SQL

Можно написать свою хранимую функцию, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
ClassMethod GREATEST(args... As %List) As %Integer [SqlProc, SqlName = GREATEST]
{
  set res= 0 
  for i= 1 : 1 :$GET(args,  0 ) set:$GET(args(i),  0 )>res res=$GET(args(i),  0 )
  q res
}
Вызов, например, так:
Код: plaintext
1.
select test.GREATEST(id, 8 ) from test.mytable
или
Код: plaintext
1.
select GREATEST( 2 , 1 , 7 , 0 ,,,,'78g',,, 5 ) from mytable
если "Имя SQL схемы по умолчанию" = "test"
...
Рейтинг: 0 / 0
LEAST & GREATEST в Cache - как?
    #35840386
Glebanski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

Спасибо.
Воспользовался вторым вариантом создав фунцию в пекедже SQLUSER
теперь могу вызывать ее из любого запроса
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / LEAST & GREATEST в Cache - как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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