Skip to content
Advertisement

Rewrite NVL and select statement according to string

I have a column, called parametre, which contains our parameters:

--option 1
TYP_SPRAC;PRIJEM_CISTY;DOKLAD;PL;MULTI;1;DOKLAD_EDI;DL+FAKT
--option 2
TYP_SPRAC;PRIJEM_VRATKA;DOKLAD;PL;MULTI;1;DOKLAD_EDI;FAKT

So i want to get a output FA or DL, according to string PRIJEM_CISTY or PRIJEM_VRATKA:

--joinning to another table... 
NVL(
    (select distinct 'FA' from import_par p 
JOIN import_doc ON p.partner=partner
where p.PARAMETRE like '%PRIJEM_VRATKA%'),

    (select distinct 'DL' from import_par p 
JOIN import_doc ON p.partner=partner
where p.PARAMETRE like '%PRIJEM_CISTY%') 
)

It works. But is there any “better” solution for this ? For example, decode() or RegExp() ?

Advertisement

Answer

You can put the two together to query

select decode(max(
       case when parametre like '%PRIJEM_VRATKA%' then 2
            when parametre like '%PRIJEM_CISTY%' then 1
       end), 2, 'FA', 1, 'DL')
  from import_par;
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement