powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / условие if
16 сообщений из 16, страница 1 из 1
условие if
    #39742739
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, подскажите как написать запрос, не получается придумать

Если isadditional = 1 тогда оставляем их
если isadditional is null тогда мы должны выбрать 1 запись c максимальным cardnum
в результате запрос должен вывести 3 записи
...
Рейтинг: 0 / 0
условие if
    #39742745
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaзапись c максимальным cardnumа если это isadditional = 1?
...
Рейтинг: 0 / 0
условие if
    #39742747
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

выбирай все isadditional = 1
+
выбрать 1 запись c максимальным cardnum где isadditional is null
...
Рейтинг: 0 / 0
условие if
    #39742749
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with q(cardnum, status, isadd) as (
select null, 0, 1 from dual union all
select 6, 0, 1 from dual union all
select 5, 0, null from dual union all
select 4, 0, null from dual union all
select 3, 0, null from dual union all
select 2, 0, null from dual union all
select 1, 0, 1 from dual union all
select 0, 0, null from dual)

select * from q q1
where q1.isadd = 1 
or not exists (select 1 from q q2 where q1.cardnum < q2.cardnum and q1.isadd is null and q2.isadd is null)
...
Рейтинг: 0 / 0
условие if
    #39742754
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,
тогда не учитываем их
...
Рейтинг: 0 / 0
условие if
    #39742758
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал через объедение
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select * from (
  
  select c.cardnum, c.status, c.isadditional, c.cardid from test c
  where c.isadditional = 1
  union all 
  select * from (
  select c.cardnum, c.status, c.isadditional, c.cardid from test c
  where  c.isadditional is null
  order by c.cardnum desc ) t
  where rownum = 1) r



Покидайте еще вариантов
...
Рейтинг: 0 / 0
условие if
    #39742762
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaне учитываемпереведи
...
Рейтинг: 0 / 0
условие if
    #39742767
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-, максимальный cardnum ищем по тем записям у которых нету isadditional = 1
...
Рейтинг: 0 / 0
условие if
    #39742769
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaПокидайте еще вариантов
уникальное поле есть (id,rowid) ?

....
stax
...
Рейтинг: 0 / 0
условие if
    #39742771
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaмаксимальный cardnum ищем по тем записям у которых нету isadditional = 1first/last group by rownum * isadditional
...
Рейтинг: 0 / 0
условие if
    #39742776
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax, есть
...
Рейтинг: 0 / 0
условие if
    #39742780
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> ed
Wrote file afiedt.buf

  1  with q(cardid,cardnum, status, isadd) as (
  2  select 1,null, 0, 1 from dual union all
  3  select 2,6, 0, null from dual union all
  4  select 3,5, 0, null from dual union all
  5  select 4,4, 0, null from dual union all
  6  select 5,3, 0, null from dual union all
  7  select 6,2, 0, null from dual union all
  8  select 7,1, 0, 1 from dual union all
  9  select 8,0, 0, null from dual)
 10  select max(cardnum) max_cardnum
 11  from q
 12* group by decode(isadd,null,'0','1'||cardid /* уникальное поле*/)
SQL> /

MAX_CARDNUM
-----------
          1
null
          6



....
stax
...
Рейтинг: 0 / 0
условие if
    #39742784
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

Может так?
Код: plsql
1.
2.
3.
4.
5.
select case when isadd = 1 then 1
            when isadd is null then max(cardnum)
                  end xxx
from q
group by isadd, decode(isadd,1,rownum,isadd)
...
Рейтинг: 0 / 0
условие if
    #39742798
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо помогли :)
...
Рейтинг: 0 / 0
условие if
    #39742802
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще такой вопрос, если я хочу вывести еще поля(cardid например)
как тогда быть ?
...
Рейтинг: 0 / 0
условие if
    #39742822
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaеще такой вопрос, если я хочу вывести еще поля(cardid например)
как тогда быть ?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  1  with q(cardid,cardnum, status, isadd) as (
  2  select 2499751,null, 0, 1 from dual union all
  3  select 2499752,6, 0, null from dual union all
  4  select 2499753,5, 0, null from dual union all
  5  select 2499754,4, 0, null from dual union all
  6  select 2499755,3, 0, null from dual union all
  7  select 2499756,2, 0, null from dual union all
  8  select 2499757,1, 0, 1 from dual union all
  9  select 2499758,0, 0, null from dual)
 10  select decode(isadd,null,cast(null as number),cardid) id,max(cardnum) max_cardnum
 11  from q
 12* group by decode(isadd,null,cast(null as number),cardid /* уникальное поле*/)
SQL> /

        ID MAX_CARDNUM
---------- -----------
null                 6
   2499751 null
   2499757           1



если полей много
1) row_number() over
2) keep first/last

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


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