single row subquery returns more than one row

SQL

Oracle PL SQL

18/01/2019

preciso fazer esta query trabalhar mas ela reclama de muitas linhas no substr

update 
    pcprodut 
set 
    pcprodut.codgenerofiscal = (
                                    select 
                                        substr(pcprodut.codncmex,0,2) 
                                    from 
                                        pcprodut 
                                    where 
                                        pcprodut.codprod in(10889,10890)
                               ) 
where 
    pcprodut.codprod in (10889,10890)
João Teixeira

João Teixeira

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

18/01/2019

tente assim:
update
    pcprodut 
set
    pcprodut.codgenerofiscal in (
                                    select
                                        substr(pcprodut.codncmex,0,2) 
                                    from
                                        pcprodut 
                                    where
                                        pcprodut.codprod in(10889,10890)
                                    group by 1
                               ) 
where
    pcprodut.codprod in (10889,10890)

note que troquei o sinal de igual pelo operador 'in' e adicionei o group by
GOSTEI 0
João Teixeira

João Teixeira

18/01/2019

tente assim:
update
    pcprodut 
set
    pcprodut.codgenerofiscal in (
                                    select
                                        substr(pcprodut.codncmex,0,2) 
                                    from
                                        pcprodut 
                                    where
                                        pcprodut.codprod in(10889,10890)
                                    group by 1
                               ) 
where
    pcprodut.codprod in (10889,10890)

note que troquei o sinal de igual pelo operador 'in' e adicionei o group by


Consegui resolver usando a seguinte expressão:

update 
    pcprodut 
set 
    pcprodut.status = (substr(pcprodut.codncmex,0,2)) 
where 
    pcprodut.codprod in(varios, codigos, numericos, separados, por, virgula);
commit;
GOSTEI 0
POSTAR