Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 GREATEST - select как аргумент  [new]
talent
Member

Откуда:
Сообщений: 56
Доброго времени суток!
Подскажите, возможно ли в аргументах GREATEST использовать вложенные запросы? Например
SELECT GREATEST(
    TIMESTAMP(SELECT A.VAL
              FROM ATAB A
                INNER JOIN VTAB V ON V.IDVAR = A.IDVAR
              WHERE UPPER(V.NAME) = 'NAME1' AND A.ID = P.ID),
    TIMESTAMP(SELECT A.VAL
              FROM ATAB A
                INNER JOIN VTAB V ON V.IDVAR = A.IDVAR
              WHERE UPPER(V.NAME) = 'NAME2' AND A.ID = P.ID))
  FROM PTAB P
WHERE P.ID = 65;


Заранее спасибо!
6 мар 17, 21:54    [20268917]     Ответить | Цитировать Сообщить модератору
 Re: GREATEST - select как аргумент  [new]
Добрый Э - Эх
Guest
talent,

если подзапросы возвращают скалярную величину, то почему бы и нет?

select
       greatest
         (
           (
             select 1 from dual
           ),
           (
             select 2 from dual
           )
         ) as x_greatest
      , least
         (
           (
             select 1 from dual
           ),
           (
             select 2 from dual
           )
         ) as x_least
  from dual;


X_GREATEST   X_LEAST
----------   -------
         2         1
7 мар 17, 06:03    [20269363]     Ответить | Цитировать Сообщить модератору
 Re: GREATEST - select как аргумент  [new]
talent
Member

Откуда:
Сообщений: 56
Спасибо!
Почему-то с TIMESTAMP не работает.
[42601][-104] Обнаружен неправильный элемент "A" после текста "TIMESTAMP (SELECT".  Список возможных правильных элементов: "
<space>".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.7.85
[56098][-727] Ошибка при неявном действии системы типа "2". Код ошибки SQLCODE "-104", состояние SQLSTATE "42601", элементы
 сообщения "A|TIMESTAMP (SELECT|<space>".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.7.85


Без него - все норм.
7 мар 17, 08:30    [20269460]     Ответить | Цитировать Сообщить модератору
 Re: GREATEST - select как аргумент  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4868
talent,

Добрый день.
Попробуйте так:

SELECT GREATEST(
TIMESTAMP((SELECT A.VAL
FROM ATAB A
INNER JOIN VTAB V ON V.IDVAR = A.IDVAR
WHERE UPPER(V.NAME) = 'NAME1' AND A.ID = P.ID)),
TIMESTAMP((SELECT A.VAL
FROM ATAB A
INNER JOIN VTAB V ON V.IDVAR = A.IDVAR
WHERE UPPER(V.NAME) = 'NAME2' AND A.ID = P.ID)))
FROM PTAB P
WHERE P.ID = 65;
7 мар 17, 16:50    [20271885]     Ответить | Цитировать Сообщить модератору
 Re: GREATEST - select как аргумент  [new]
talent
Member

Откуда:
Сообщений: 56
Mark Barinstein,

Да, так работает. Спасибо!
8 мар 17, 12:35    [20274173]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить