Как выбрать максимальное значение из нескольких таблиц в одном столбце - PullRequest
4 голосов
/ 18 марта 2010

Я бы хотел изменить дату последнего изменения записей. Вот пример простого SELECT:

SELECT
 t01.name,
 t01.last_upd date1,
 t02.last_upd date2,
 t03.last_upd date3,
 'maxof123' maxdate
FROM
  s_org_ext   t01,  
  s_org_ext_x   t02,   
  s_addr_org   t03   
WHERE
  t02.par_row_id(+)= t01.row_id and
  t03.row_id(+)= t01.pr_addr_id and
  t01.int_org_flg = 'n';

Как я могу получить столбец maxdate для отображения максимального из трех дат?

Примечание: нет операторов UNION или вложенных / вложенных операторов SELECT;)

Ответы [ 3 ]

11 голосов
/ 18 марта 2010

Величайшее (t01.last_upd, t02.last_upd date2, t03.last_upd) как максимальное значение

2 голосов
/ 18 марта 2010

используйте оператор CASE в предложении SELECT, чтобы сделать что-то вроде:

CASE WHEN date1 > date2 AND date1 > date3 THEN date1 WHEN date2 > date3 THEN date2 ELSE date3 END AS maxdate

Он выйдет из логики, как только будет выполнено первое условие.

0 голосов
/ 12 июня 2015

Используйте функцию GREATEST, также используются явные объединения, а не неявные объединения.

SELECT t01.name, t01.last_upd date1, t02.last_upd date2, t03.last_upd date3,
GREATEST(t01.last_upd, t02.last_upd, t03.last_upd) AS maxdate 
FROM s_org_ext t01
LEFT OUTER JOIN s_org_ext_x t02 ON t01.row_id = t02.par_row_i
LEFT OUTER JOIN s_addr_org t03 ON t01.pr_addr_id = t03.row_id
WHERE t01.int_org_flg = 'n';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...