Получить только 1 строку с MAX () в столбцах - SAP HANA - PullRequest
0 голосов
/ 12 марта 2019

У меня есть эта таблица:

|--------------|-------------|-----------|-----------|
|    cli_id    |    email    |   is_one  |  n_order  |
|--------------|-------------|-----------|-----------|
|       1      |   a@a.com   |     1     |   2341    |
|--------------|-------------|-----------|-----------|
|       1      |   b@a.com   |     0     |     21    |
|--------------|-------------|-----------|-----------|
|       1      |   c@a.com   |     0     |    121    |
|--------------|-------------|-----------|-----------|
|       1      |   a@a.com   |     1     |     50    |
|--------------|-------------|-----------|-----------|

Как выбрать только 1 электронное письмо, одно с MAX (is_one) и MAX (n_order)?Например, я не могу использовать «WHERE is_one = 1», я должен использовать «max (is_one)» или эквивалентный.

Результат должен быть таким:

|-------------|
|    email    |
|-------------|
|   a@a.com   |
|-------------|

Спасибо!

Ответы [ 4 ]

1 голос
/ 12 марта 2019

Вы хотите email из строки, содержащей:
максимальное значение is_one и
максимальное значение n_order, верно?

select email from tablename
where
  is_one = (select max(is_one) from tablename)
  and
  n_order = (select max(n_order) from tablename)
1 голос
/ 12 марта 2019

Хммм.,,

select top (1) email
from t
order by is_one desc, n_order desc;
0 голосов
/ 12 марта 2019

Вы можете использовать подзапрос с max агрегатной функцией, как показано ниже

SELECT t~email
  FROM tab AS t
 WHERE (t~is_one, t~n_order) IN
      ( SELECT max(t~is_one), max(t~n_order)
          FROM tab )
0 голосов
/ 12 марта 2019

используйте r ow_number(), если поддерживается

   select * from (
  select *, row_number()over(order by  is_one desc,n_order desc) rn
   ) a where a.rn=1
...