оракул - макс с делом - PullRequest
       1

оракул - макс с делом

0 голосов
/ 07 марта 2011
select case when cntrctr_lcns_seq_no is null
                                   then 1
                                   else max(cntrctr_lcns_seq_no)
                                   end as cntrctr_lcns_seq_no
                                   from nuwmsweb.cntrctr_lcns_info
                                    where third_party_id = thirdPartyId
                                    group by third_party_id

Я думаю, ты видишь, что я пытаюсь сделать. Получить максимальное значение seq_no для определенного идентификатора. Но я получаю сообщение об ошибке «ни одно предложение группы группы».

Этот оператор выбора является частью большой вставки.

Спасибо!

обновление: это все утверждение

insert into nuwmsweb.CNTRCTR_LCNS_INFO
    (third_party_id,cntrctr_lcns_seq_no,cntrctr_lcns_no,
    lcns_st_cd,certfn_level_type_cd,cntrctr_type_cd,cut_tap_authy_ind,
    stat_type_nm)
    VALUES(thirdPartyId,(select max(case when cntrctr_lcns_seq_no is null
                                   then 1
                                   else cntrctr_lcns_seq_no
                                   end) as cntrctr_lcns_seq_no
                                   from nuwmsweb.cntrctr_lcns_info
                                    where third_party_id = thirdPartyId
                                    group by third_party_id
                                    ),
          licenseNumber,licenseState,licenseLevel,licenseType,cutTap,status);

Ответы [ 4 ]

1 голос
/ 07 марта 2011

Я думаю, что вы хотите:

select coalesce (max(cntrctr_lcns_seq_no),1) as cntrctr_lcns_seq_no
  from nuwmsweb.cntrctr_lcns_info
 where third_party_id = thirdPartyId

(или вы можете использовать Oracle nvl вместо ANSI coalesce, если хотите).

1 голос
/ 07 марта 2011

Функция агрегирования max игнорирует нулевые значения, поэтому вам не нужно указывать регистр или группу, так как вам нужно max для всего возвращаемого набора.

select
    coalesce(max(cntrctr_lcns_seq_no), 1) as cntrctr_lcns_seq_no
from nuwmsweb.cntrctr_lcns_info
where third_party_id = thirdPartyId
0 голосов
/ 07 марта 2011

Редактировать:

Ошибка, которую вы получаете, состоит в том, что вы не включаете третий_партийный_идул в предложение group by.

Try ...

select max(case when cntrctr_lcns_seq_no is null
                                   then 1
                                   else cntrctr_lcns_seq_no
                                   end) as cntrctr_lcns_seq_no
                                   from nuwmsweb.cntrctr_lcns_info
                                    where third_party_id = thirdPartyId
                                    group by third_party_id

Если вы действительно хотите использовать этот синтаксис для другого (более сложного запроса). Кроме того, вы должны добавить third_party_id в предложение group by.

Но Макс уже игнорирует нули, поэтому не будет ли такой запрос более описательным, чем вы пытаетесь сделать?

select third_party_id, max(nvl(cntrctr_lcns_seq_no,1))
        from nuwmsweb.cntrctr_lcns_info
        where third_party_id = thirdPartyId
        group by third_party_id
0 голосов
/ 07 марта 2011

Попробуйте это:

select  max(case when cntrctr_lcns_seq_no is null then 1
        else cntrctr_lcns_seq_no end) as cntrctr_lcns_seq_no
from nuwmsweb.cntrctr_lcns_info
where third_party_id = thirdPartyId                                     
group by third_party_id 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...