Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / условие if / 16 сообщений из 16, страница 1 из 1
05.12.2018, 11:39
    #39742739
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
Добрый день, подскажите как написать запрос, не получается придумать

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

выбирай все isadditional = 1
+
выбрать 1 запись c максимальным cardnum где isadditional is null
...
Рейтинг: 0 / 0
05.12.2018, 11:53
    #39742749
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
Код: 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
05.12.2018, 12:07
    #39742754
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
-2-,
тогда не учитываем их
...
Рейтинг: 0 / 0
05.12.2018, 12:09
    #39742758
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
Сделал через объедение
Код: 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
05.12.2018, 12:11
    #39742762
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
petrovichvanyaне учитываемпереведи
...
Рейтинг: 0 / 0
05.12.2018, 12:22
    #39742767
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
-2-, максимальный cardnum ищем по тем записям у которых нету isadditional = 1
...
Рейтинг: 0 / 0
05.12.2018, 12:25
    #39742769
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
petrovichvanyaПокидайте еще вариантов
уникальное поле есть (id,rowid) ?

....
stax
...
Рейтинг: 0 / 0
05.12.2018, 12:35
    #39742771
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
petrovichvanyaмаксимальный cardnum ищем по тем записям у которых нету isadditional = 1first/last group by rownum * isadditional
...
Рейтинг: 0 / 0
05.12.2018, 12:43
    #39742776
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
Stax, есть
...
Рейтинг: 0 / 0
05.12.2018, 12:48
    #39742780
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
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
05.12.2018, 12:54
    #39742784
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
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
05.12.2018, 13:11
    #39742798
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
всем спасибо помогли :)
...
Рейтинг: 0 / 0
05.12.2018, 13:19
    #39742802
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
еще такой вопрос, если я хочу вывести еще поля(cardid например)
как тогда быть ?
...
Рейтинг: 0 / 0
05.12.2018, 13:58
    #39742822
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
условие if
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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / условие if / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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