powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / выборка значений из строк с самой свежей датой
3 сообщений из 3, страница 1 из 1
выборка значений из строк с самой свежей датой
    #40046061
God of Chaos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день!

Не могу сообразить, как сделать выборку значений из строк с самой свежей датой.
Понимаю, что необходимо выбирать ID и Max(time) при использовании group by ID (верно же понимаю?),
но в каком месте и каким подзапросом или возможно другим способом это сделать, не могу сообразить.

Есть следующая таблица:

IDold_ValNew_ValWho_changeTime1oldval123newvaluser1date1oldest1oldval321newvaluser1date1newlest2oldval234newvaluser2date2oldest2oldval567newvaluser2date2newlest3oldval567newvaluser1date3oldest3oldval123newvaluser2date3BeetwenOldest&Newlest3oldval345newvaluser3date3newlest4oldval456newvaluser1date4oldlest4oldval567newvaluser2date4BeetwenOldest&Newlest4oldval456newvaluser3date4BeetwenOldest&Newlest4oldval456newvaluser2date4BeetwenOldest&Newlest4oldval123newvaluser4date4newlest

запрос который выводит данную информацию (делается из MS SQL к БД Oracle)

Код: plsql
1.
2.
3.
4.
5.
select * from openquery (linked_server, 'select "ID", "Old_Val", "New_Val", "Who_Change, "Time" 
                                         from table 
                                         where "New_Val"=''newval'' and "ID" in (''1'',''2'',''3'',''4'')
                                         order by "ID", "Time"
                                    ')



на выходе должно быть так:
IDold_ValNew_ValWho_changeTime1oldval321newvaluser1date1newlest2oldval567newvaluser2date2newlest3oldval345newvaluser3date3newlest4oldval123newvaluser4date4newlest
...
Рейтинг: 0 / 0
выборка значений из строк с самой свежей датой
    #40046068
exciter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
God of Chaos,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select tab.id as tab_id,
       max(tab.old_Val) keep(dense_rank first order by tab.Time desc) as old_Val,
       max(tab.New_Val) keep(dense_rank first order by tab.Time desc) as New_Val,
       max(tab.Who_change) keep(dense_rank first order by tab.Time desc) as Who_change,
       max(tab.Time) as tab_time
  from table tab
 where tab.New_Val = 'newval' and tab.ID in ('1','2','3','4')
 group by tab.id
...
Рейтинг: 0 / 0
выборка значений из строк с самой свежей датой
    #40046075
SilentMage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно как-то так, с подзапросом:
Код: plsql
1.
2.
3.
4.
5.
 where  (id,time) in (
select id, max(time) from table
 where id in (1,2,3,4)
 group by id
 )


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


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