Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
PessoALL,Num comando DECODE () podemos colocar quantos campos 'default'? Digo, numa situação assim:Para cada laboratório, teremos:ENTOMOLOGIA se pr.processo = labo.processo e labo.lab = 'ENTO'- DATA DE ENTRADA labo.labodt- ACESSOS labo.nacc- LAUDO se pana.isento = 'X' então 'Ausência de insetos'Caso contrário, display ptax.taxon quando labo.labo = pana.labo e pana.nana = prade.nana e prade.ptaxno = ptax.ptaxnoouACAROLOGIA se pr.processo = labo.processo e labo.lab = 'ACAR' - DATA DE ENTRADA labo.labodt - ACESSOS labo.nacc - LAUDO se pana.isento = 'X' então 'Ausência de ácaros' Caso contrário, display ptax.taxon quando labo.labo = pana.labo e pana.nana = prade.nana e prade.ptaxno = ptax.ptaxno ouBACTERIOLOGIA se pr.processo = labo.processo e labo.lab = 'BACT' - DATA DE ENTRADA labo.labodt - ACESSOS labo.nacc - LAUDO se pana.isento = 'X' então 'Ausência de bactérias' Caso contrário, display ptax.taxon quando labo.labo = pana.labo e pana.nana = prade.nana e prade.ptaxno = ptax.ptaxno ouMICOLOGIA se pr.processo = labo.processo e labo.lab = 'MICO' - DATA DE ENTRADA labo.labodt - ACESSOS labo.nacc - LAUDO se pana.isento = 'X' então 'Ausência de fungos' Caso contrário, display ptax.taxon quando labo.labo = pana.labo e pana.nana = prade.nana e prade.ptaxno = ptax.ptaxno ouNEMATOLOGIA se pr.processo = labo.processo e labo.lab = 'NEMA' - DATA DE ENTRADA labo.labodt - ACESSOS labo.nacc - LAUDO se pana.isento = 'X' então 'Ausência de nematóides' Caso contrário, display ptax.taxon quando labo.labo = pana.labo e pana.nana = prade.nana e prade.ptaxno = ptax.ptaxno ouVIROLOGIA se pr.processo = labo.processo e labo.lab = 'VIRO' - DATA DE ENTRADA labo.labodt - ACESSOS labo.nacc - LAUDO se pana.isento = 'X' então 'Ausência de virus' Caso contrário, display ptax.taxon quando labo.labo = pana.labo e pana.nana = prade.nana e prade.ptaxno = ptax.ptaxnoserá que está certo implementar assim?decode (labo.lab, 'ENTO', 'Entomologia', pana.isento, 'X', 'Ausência de insetos', labo.labodt, labo.nacc, ptax.taxon, 'ACAR', 'Acarologia', pana.isento, 'X', 'Ausência de ácaros', labo.labodt, labo.nacc, ptax.taxon, 'BACT' , 'Bacteriologia', pana.isento, 'X', 'Ausência de bactérias', labo.labodt, labo.nacc, ptax.taxon, 'MICO' , 'Micologia', pana.isento, 'X', 'Ausência de fungos', labo.labodt, labo.nacc, ptax.taxon, 'NEMA', 'Nematologia', pana.isento, 'X', 'Ausência de nematóides', labo.labodt, labo.nacc, ptax.taxon, 'VIRO', 'Virologia', pana.isento, 'X', 'Ausência de virus', labo.labodt, labo.nacc, ptax.taxon)Se estiver errado, como é que faz? E se eu usasse o CASE, como ficaria?Grata a quem me ajudar... por favor, é urgente!
Obrigada.Vou tentar esse 'decode embutido' pra ver no que dá.
Pq não tenta utilizar um CASE desde DECODE? Abraços, :lol:
http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Obrigada pela atenção, já terminei.
Ficou assim: usei o Oracle Reports Builder 6.0, no Assistente de Relatórios: "Agrupar acima" e o SQL:
select distinct
substr(pr.processo,5,4)||'/'||substr(pr.processo,1,4) as Processo, pr.procdt as Data, geo.country as País, substr(pr.tit, 1,20) as Produto, dform.ndform as Material, labo.labodt as Dt_entrada, labo.nacc as Acessos,
decode
(pr.impti, 'IM', 'Importação', 'EX', 'Exportação', 'TI', 'Trânsito Interno') as Movimentação,
decode
(labo.lab,
'ENTO', 'Entomologia',
'ACAR', 'Acarologia',
'BACT' , 'Bacteriologia',
'MICO' , 'Micologia',
'NEMA', 'Nematologia',
'VIRO', 'Virologia') as Laboratório,
case
when labo.lab = 'ENTO' and pana.isento = 'X' then 'Ausência de insetos'
when labo.lab = 'ACAR' and pana.isento = 'X' then 'Ausência de ácaros'
when labo.lab = 'BACT' and pana.isento = 'X' then 'Ausência de bactérias'
when labo.lab = 'MICO' and pana.isento = 'X' then 'Ausência de fungos'
when labo.lab = 'NEMA' and pana.isento = 'X' then 'Ausência de nematóides'
when labo.lab = 'VIRO' and pana.isento = 'X' then 'Ausência de virus'
else ptax.taxon end Laudo
from
pr, labo, lau, coop, geo, dform, pana, prade, ptax
where
lau.sepadt between : de and :ate and
pr.processo = labo.processo and
pr.processo = lau.processo and
pr.cnop = coop.cno and
coop.geono = geo.geono and
pr.dform = dform.dform and
labo.labo = pana.labo and
pana.nana = prade.nana and
prade.ptaxno = ptax.ptaxno;
O decode só retorna um valor, para mais de um criei outro decode.
decode(cod,'ent','entomologia','mor','morfologia','outros')
pode ter um decode dentro de outro
decode(cod,1,decode(lingua,'pt','um','one'),
2,decode(lingua,'pt','dois','two'))
não sei bem se é isto o que você quer.