powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
13 сообщений из 13, страница 1 из 1
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939574
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С order by не выходит в один запрос, т.к. выгружает все номера макс даты, т.е последние за такой то период
А мне нужно, что бы просто вот одну строку
С максимальной датой изменения тарифного плана
Из всех номеров за этот период

Только начинаю осваивать оракл

вот код


select td.terminal_device_id , td.msisdn , td.date_from, td.date_to, tp.tariff_plan_name as new_plan, tp2.tariff_plan_name as old_plan, tp.tariff_plan_id


from cust.terminal_device td
inner join cust.terminal_device td2
on td.terminal_device_id=td2.terminal_device_id
inner join rd.tariff_plan tp
on td.tariff_plan_id = tp.tariff_plan_id
inner join rd.tariff_plan tp2
on td2.tariff_plan_id=tp2.tariff_plan_id

where td.date_from between to_date ('28.02.2020 00:00:00', 'dd.mm.yyyy hh24:mi:ss') and to_date ('29.02.2020 23:59:59', 'dd.mm.yyyy hh24:mi:ss')

and td.date_from=td2.date_to+1/86400
and td.tariff_plan_id!=td2.tariff_plan_id

and exists (select 1 from cust.terminal_device td3
where td.terminal_device_id=td3.terminal_device_id
and td3.date_to is null
)


order by td.date_from desc;
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939580
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
Только начинаю осваивать оракл
Начните освоение с чтения документации. Раздел "Агрегатные функции". Есть такая функция MAX
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939584
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n,

какая версия оракля?

ps
Код: plsql
1.
2.
3.
4.
5.
SQL> select * from (select * from emp order by hiredate desc) where rownum = 1;

     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
      7876 ADAMS      CLERK           7788 12.01.1983       1100                    20



.....
stax
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939585
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zmeelov2,
Я знаю да, я уже пробовал по разному с этой функцией поработать , но не выходит, потому и написал сюда
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939594
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
Я знаю да, я уже пробовал по разному
Точную формулировку задачи. У вас непонятно, что надо сделать и какие есть данные.
Надо вывести максимальную дату (поле ….) в разрезе (по каждому терминалу или тарифному плану) или что?
Формулируете. В запросе оставляете ТОЛЬКО те поля, которые нужны. Запускаете. Смотрите - в результирующем наборе есть то, что надо, среди прочего?
Затем
Код: sql
1.
SELECT MAX(поле) [список полей группировки] FROM таблица/набор [GROUP BY список полей группировки]


Важно понять - какие поля группировки вам нужны.
ORDER BY вам здесь не нужен.
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939595
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
А где можно посмотреть ?


Да примерно такое же пробовал , но ругается



select td.terminal_device_id , td.msisdn , td.date_from, td.date_to, tp.tariff_plan_name as new_plan, tp2.tariff_plan_name as old_plan, tp.tariff_plan_id


from ( select td.terminal_device_id , td.msisdn , td.date_from, td.date_to, tp.tariff_plan_name as new_plan, tp2.tariff_plan_name as old_plan, tp.tariff_plan_id
from cust.terminal_device td
inner join cust.terminal_device td2
on td.terminal_device_id=td2.terminal_device_id
inner join rd.tariff_plan tp
on td.tariff_plan_id = tp.tariff_plan_id
inner join rd.tariff_plan tp2
on td2.tariff_plan_id=tp2.tariff_plan_id
order by td.date_from desc )

where rownum = 1
and td.date_from between to_date ('28.02.2020 00:00:00', 'dd.mm.yyyy hh24:mi:ss') and to_date ('29.02.2020 23:59:59', 'dd.mm.yyyy hh24:mi:ss')

and td.date_from=td2.date_to+1/86400
and td.tariff_plan_id!=td2.tariff_plan_id

and exists (select 1 from cust.terminal_device td3
where td.terminal_device_id=td3.terminal_device_id
and td3.date_to is null
)
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939604
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zmeelov2,

Я так и делал, но он мне выводит все терминал айди с максимальными датами изменения тарифного плана(ТП) ( т.е. у каждого терминала айди имеется по несколько дат изменения ТП, и вот по этому коду он мне выводит все терминиал айди , а мне нужно последнюю максимальную дату , т.е. должно выгрузить максимальную дату из всех этих дат
Поля должны быть все, все что указано в селекте
Как я понял он мне не дает выгрузить так как я хочу, потому что даты с одной таблички, а ТП с другой
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939608
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
Stax,
А где можно посмотреть ?

какая версия оракля?

вот код

SELECT * FROM (

select td.terminal_device_id , td.msisdn , td.date_from, td.date_to, tp.tariff_plan_name as new_plan, tp2.tariff_plan_name as old_plan, tp.tariff_plan_id


from cust.terminal_device td
inner join cust.terminal_device td2
on td.terminal_device_id=td2.terminal_device_id
inner join rd.tariff_plan tp
on td.tariff_plan_id = tp.tariff_plan_id
inner join rd.tariff_plan tp2
on td2.tariff_plan_id=tp2.tariff_plan_id

where td.date_from between to_date ('28.02.2020 00:00:00', 'dd.mm.yyyy hh24:mi:ss') and to_date ('29.02.2020 23:59:59', 'dd.mm.yyyy hh24:mi:ss')

and td.date_from=td2.date_to+1/86400
and td.tariff_plan_id!=td2.tariff_plan_id

and exists (select 1 from cust.terminal_device td3
where td.terminal_device_id=td3.terminal_device_id
and td3.date_to is null
)

order by td.date_from desc
) WHERE ROWNUM =1;

....
stax
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939612
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
Zmeelov2,
не дает выгрузить так как я хочу, потому что даты с одной таблички, а ТП с другой


с разных табличек, тут не причем

не совсем понятно что Вам надо
1) одну строку с макс датой
2) для каждого плана по одной строке с макс датой

зы
по одной строке для каждого deptno
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  1  select * from (
  2    select e.*
  3         ,row_number() over (partition by deptno order by hiredate desc) rn
  4    from emp e)
  5* where rn = 1
SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO         RN
---------- ---------- --------- ---------- ---------- ---------- ---------- ---------- ----------
      7934 MILLER     CLERK           7782 23.01.1982       1300                    10          1
      7876 ADAMS      CLERK           7788 12.01.1983       1100                    20          1
      7900 JAMES      CLERK           7698 03.12.1981        950                    30          1



.....
stax
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939613
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
нужно одну строчку с максимальной датой
Для каждого я уже делал
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939618
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
Stax,
нужно одну строчку с максимальной датой
Для каждого я уже делал


22103006
22103042


select * from (
Ваш запрос с order by td.date_from desc
) where rownun=1

.....
stax
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939619
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Да, все получилось
Спасибо большое !
...
Рейтинг: 0 / 0
Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
    #39939625
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n,

в не древних версиях расширили order by кляузу

The row_limiting_clause allows you to limit the rows returned by the query. You can specify an offset, and the number of rows or percentage of rows to return. You can use this clause to implement top-N reporting. For consistent results, specify the order_by_clause to ensure a deterministic sort order.

.....
stax
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как здесь выгрузить из таблицы ОДНУ строку с максимальной датой?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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