Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / отфильтровать запрос / 18 сообщений из 18, страница 1 из 1
21.01.2022, 10:53
    #40128335
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
запрос выводит окончание даты - на месяц вперед с сегодняшнего дня (то есть через месяц наступит finishdate)
нужно отфильтровать запрос чтобы не выводил даты (более старые даты) одного ID

например 3 test3 23.02.22 (эту строку не нужно выводить)
3 test3 24.02.22


SELECT
tab1.finishdate,
tab1.name
tab1.ID
FROM
tab1
WHERE
tab1.finishdate > current_date
AND tab1.finishdate < add_months(current_date, 1)
ORDER BY
tab1.finishdate


выводит
id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 23.02.22
3 test3 24.02.22
4 test4 26.02.22
5 test5 27.02.22


Объяснил как смог ))) заранее спасибо
...
Рейтинг: 0 / 0
21.01.2022, 12:09
    #40128356
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota
с сегодняшнего дня


сегодня какое (выводит 16.02.22)?


пусть current_date=15.02.22
для
id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 16.02.22
3 test3 18.02.22
3 test3 23.02.22
3 test3 24.02.22
3 test3 27.02.22
3 test3 28.02.22
4 test4 26.02.22
5 test5 27.02.22
результат какой?

даты в пределах ид уникальны?

.....
stax
...
Рейтинг: 0 / 0
21.01.2022, 12:14
    #40128358
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
Stax
prota
с сегодняшнего дня


сегодня какое (выводит 16.02.22)?


пусть current_date=15.02.22
для
id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 16.02.22
3 test3 18.02.22
3 test3 23.02.22
3 test3 24.02.22
3 test3 27.02.22
3 test3 28.02.22
4 test4 26.02.22
5 test5 27.02.22
результат какой?

даты в пределах ид уникальны?

.....
stax


16 февраля 1922 года — в РСФСР введён гербовый сбор
...
Рейтинг: 0 / 0
21.01.2022, 12:20
    #40128359
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
причем тут это пусть current_date=15.02.22

ужно отфильтровать запрос чтобы не выводил даты (более старые даты) одного ID

например
3 test3 23.02.22 (эту строку не нужно выводить)
3 test3 24.02.22

да id уникальны
tab1.finishdate > current_date с сегодняшнего дня (то есть через месяц наступит finishdate) -- AND tab1.finishdate < add_months(current_date, 1)
...
Рейтинг: 0 / 0
21.01.2022, 12:37
    #40128366
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
Извиняюсь неправильно числа надписал ))) просто выставил не на месяц ( add_months(current_date, 1) )
а на 12 месяцев add_months(current_date, 12)

id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 23.02.22
3 test3 24.02.22
4 test4 26.02.22
5 test5 27.02.22

но сути это не меняет
...
Рейтинг: 0 / 0
21.01.2022, 13:43
    #40128399
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota
причем тут это пусть current_date=15.02.22

ужно отфильтровать запрос чтобы не выводил даты (более старые даты) одного ID

например
3 test3 23.02.22 (эту строку не нужно выводить)
3 test3 24.02.22

да id уникальны
tab1.finishdate > current_date с сегодняшнего дня (то есть через месяц наступит finishdate) -- AND tab1.finishdate < add_months(current_date, 1)


сегодня 21.01.22

почему 23.02.22 убрать, а 24.02.22 оставить?оставить последнюю?


пусть current_date=15.02.22
для
id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 16.02.22
3 test3 18.02.22
3 test3 23.02.22
3 test3 24.02.22
3 test3 27.02.22
3 test3 28.02.22
4 test4 26.02.22
5 test5 27.02.22
результат какой для 3?

зы
даты в пределах ид уникальны?

.....
stax
...
Рейтинг: 0 / 0
21.01.2022, 14:31
    #40128423
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
Stax,
я же написал выше
Извиняюсь неправильно числа надписал ))) просто выставил не на месяц ( add_months(current_date, 1) )
а на 12 месяцев add_months(current_date, 12)
это сути вопроса не меняет

для каждого name свой id

почему 23.02.22 убрать, а 24.02.22 оставить?оставить последнюю? - нужно отфильтровать запрос чтобы не выводил даты (более старые даты) одного ID
...
Рейтинг: 0 / 0
21.01.2022, 14:44
    #40128429
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota

Объяснил как смог


Да, объясняльщик ты еще тот. Возможно:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select  max(tab1.finishdate) finishdate,
        tab1.name,
        tab1.id
  from  tab1
  where tab1.finishdate > current_date
    and tab1.finishdate < add_months(current_date,1)
  group by tab1.name,
           tab1.id
  order by tab1.finishdate
/



SY.
...
Рейтинг: 0 / 0
21.01.2022, 14:47
    #40128431
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
SY,
Объяснил как смог ))) в первом посте сразу написал ))) извиняюсь)
...
Рейтинг: 0 / 0
21.01.2022, 14:58
    #40128434
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota

нужно отфильтровать запрос чтобы не выводил даты (более старые даты) одного ID

Вы повторяете первый пост

понятие "более старые даты" у каждого свое

еще раз

пусть current_date=15.02.22
что оставить для id=3, какую конкретно строку?
id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 16.02.22
3 test3 18.02.22
3 test3 23.02.22
3 test3 24.02.22
3 test3 27.02.22
3 test3 28.02.22
4 test4 26.02.22
5 test5 27.02.22
результат какой для 3?

зы
даты в пределах ид уникальны?

.....
stax
...
Рейтинг: 0 / 0
21.01.2022, 15:11
    #40128440
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
SY
prota

Объяснил как смог


Да, объясняльщик ты еще тот. Возможно:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select  max(tab1.finishdate) finishdate,
        tab1.name,
        tab1.id
  from  tab1
  where tab1.finishdate > current_date
    and tab1.finishdate < add_months(current_date,1)
  group by tab1.name,
           tab1.id
  order by tab1.finishdate
/



SY.


сделал как вы написали но все равно вывело все значения
...
Рейтинг: 0 / 0
21.01.2022, 15:15
    #40128442
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
Stax
prota

нужно отфильтровать запрос чтобы не выводил даты (более старые даты) одного ID

Вы повторяете первый пост

понятие "более старые даты" у каждого свое

еще раз

пусть current_date=15.02.22
что оставить для id=3, какую конкретно строку?
id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 16.02.22
3 test3 18.02.22
3 test3 23.02.22
3 test3 24.02.22
3 test3 27.02.22
3 test3 28.02.22
4 test4 26.02.22
5 test5 27.02.22
результат какой для 3?

зы
даты в пределах ид уникальны?

.....
stax


вот такой ответ должен быть

id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 28.02.22
4 test4 26.02.22
5 test5 27.02.22
...
Рейтинг: 0 / 0
21.01.2022, 15:46
    #40128471
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota,

Вариант SY
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
  1  with t(id, name, finishdate) as (
  2  select 1, 'test1 ',to_date('16.02.22','dd.mm.yy') from dual union all
  3  select 1, 'test1 ',to_date('17.02.22','dd.mm.yy') from dual union all
  4  select 1, 'test1 ',to_date('17.02.22','dd.mm.yy') from dual union all
  5  select 3, 'test3 ',to_date('16.02.22','dd.mm.yy') from dual union all
  6  select 3, 'test3 ',to_date('18.02.22','dd.mm.yy') from dual union all
  7  select 3, 'test3 ',to_date('23.02.22','dd.mm.yy') from dual union all
  8  select 3, 'test3 ',to_date('24.02.22','dd.mm.yy') from dual union all
  9  select 3, 'test3 ',to_date('27.02.22','dd.mm.yy') from dual union all
 10  select 3, 'test3 ',to_date('28.02.22','dd.mm.yy') from dual union all
 11  select 4, 'test4 ',to_date('26.02.22','dd.mm.yy') from dual union all
 12  select 5, 'test5 ',to_date('27.02.22','dd.mm.yy') from dual)
 13  select
 14    id
 15   ,max(name) name
 16   ,max(finishdate) finishdate
 17  from t
 18  --where
 19  --group by id,decode(id,3,cast(null as date),finishdate)
 20  group by id,decode(id,3,0,rownum)  --rowid
 21* order by 1,3
SQL> /

        ID NAME   FINISHDATE
---------- ------ ----------
         1 test1  16.02.2022
         1 test1  17.02.2022
         1 test1  17.02.2022
         3 test3  28.02.2022
         4 test4  26.02.2022
         5 test5  27.02.2022

6 rows selected.




ps
я б делал через lead/lag
зы
даты в пределах ид уникальны?

.....
stax
...
Рейтинг: 0 / 0
21.01.2022, 15:54
    #40128479
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
Stax,
у меня id тысячи
ладно буду сам мучить - спасибо всем
если что то получится пример запроса сюда скину
...
Рейтинг: 0 / 0
21.01.2022, 16:19
    #40128492
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota
Stax,
у меня id тысячи
ладно буду сам мучить - спасибо всем
если что то получится пример запроса сюда скину


как тысячи?

авторнужно отфильтровать запрос чтобы не выводил даты (более старые даты) одного ID



3 в decode, ето "одного ID=3"

ps
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
with t(id, name, finishdate) as (
--сдесь Ваш запрос без сортировки
SELECT
tab1.finishdate,
tab1.name
tab1.ID
FROM
tab1
WHERE
tab1.finishdate > current_date
AND tab1.finishdate < add_months(current_date, 1)
--ORDER BY
--tab1.finishdate
)
select 
  id
 ,max(name) name
 ,max(finishdate) finishdate 
from t
--where
--group by id,decode(id,3,cast(null as date),finishdate)
group by id,decode(id,3,0,rownum)  --rowid
order by 1,3
/



....
stax
...
Рейтинг: 0 / 0
21.01.2022, 17:04
    #40128526
prota
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
Stax,
все оказалось проще
добавил фильтр
finishdate IN (SELECT MAX(finishdate) tab1 GROUP BY id)
...
Рейтинг: 0 / 0
21.01.2022, 17:37
    #40128544
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota
Stax,
все оказалось проще
добавил фильтр
finishdate IN (SELECT MAX(finishdate) tab1 GROUP BY id)


странно, но Вам виднее

значит я совсем не понял вопрос
prota



вот такой ответ должен быть

id name finishdate
1 test1 16.02.22
2 test2 17.02.22
3 test3 28.02.22
4 test4 26.02.22
5 test5 27.02.22

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
SQL> ed
Wrote file afiedt.buf

  1  with tab1(id, name, finishdate) as (
  2  select 1, 'test1 ',to_date('16.02.22','dd.mm.yy') from dual union all
  3  select 1, 'test1 ',to_date('17.02.22','dd.mm.yy') from dual union all
  4  select 1, 'test1 ',to_date('17.02.22','dd.mm.yy') from dual union all
  5  select 3, 'test3 ',to_date('16.02.22','dd.mm.yy') from dual union all
  6  select 3, 'test3 ',to_date('18.02.22','dd.mm.yy') from dual union all
  7  select 3, 'test3 ',to_date('23.02.22','dd.mm.yy') from dual union all
  8  select 3, 'test3 ',to_date('24.02.22','dd.mm.yy') from dual union all
  9  select 3, 'test3 ',to_date('27.02.22','dd.mm.yy') from dual union all
 10  select 3, 'test3 ',to_date('28.02.22','dd.mm.yy') from dual union all
 11  select 4, 'test4 ',to_date('26.02.22','dd.mm.yy') from dual union all
 12  select 5, 'test5 ',to_date('27.02.22','dd.mm.yy') from dual)
 13  select  *
 14  from tab1
 15  where finishdate IN (SELECT MAX(finishdate) from tab1 GROUP BY id)
 16* order by 1,3
SQL> /

        ID NAME   FINISHDATE
---------- ------ ----------
         1 test1  17.02.2022
         1 test1  17.02.2022
         3 test3  27.02.2022
         3 test3  28.02.2022
         4 test4  26.02.2022
         5 test5  27.02.2022

6 rows selected.

SQL>



.....
stax
...
Рейтинг: 0 / 0
21.01.2022, 22:08
    #40128612
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отфильтровать запрос
prota
Извиняюсь

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


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