powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / отфильтровать запрос
18 сообщений из 18, страница 1 из 1
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #40128429
Фотография 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
отфильтровать запрос
    #40128431
prota
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,
Объяснил как смог ))) в первом посте сразу написал ))) извиняюсь)
...
Рейтинг: 0 / 0
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #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
отфильтровать запрос
    #40128479
prota
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
у меня id тысячи
ладно буду сам мучить - спасибо всем
если что то получится пример запроса сюда скину
...
Рейтинг: 0 / 0
отфильтровать запрос
    #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
отфильтровать запрос
    #40128526
prota
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
все оказалось проще
добавил фильтр
finishdate IN (SELECT MAX(finishdate) tab1 GROUP BY id)
...
Рейтинг: 0 / 0
отфильтровать запрос
    #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
отфильтровать запрос
    #40128612
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prota
Извиняюсь

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


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