• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 377
  • Last Modified:

query in oracle

I need to show 2 columns: usuario_destino and estacion_destino
 Currently I am showing 4
 usuario_destino_1, estacion_destino_1, usuario_destino_2, estacion_destino_2
 What I do is the following:
 1. When usuario_destino_2 usuario_destino_1 has value and has no value, then I show usuario_destino_1
 2. When estacion_destino_2 estacion_destino_1 has value and has no value, then I show estacion_destino_1
desired information is displayed in the yellow attachment (view file)

I have this query
SELECT
SOL.VARETIQPROVISION AS "Nro. Solicitud",
(SELECT SOLREC.Varnomusuariodestino FROM SOLICITUDSEGUIMIENTO SOLREC
WHERE
SOLREC.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLREC.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLREC.INTTIPOSEGUIMIENTO= 1 AND
SOLREC.INTIDSOLICITUDSEGUIMIENTO = (
SELECT MAX(SOLRECR.INTIDSOLICITUDSEGUIMIENTO) FROM SOLICITUDSEGUIMIENTO SOLRECR
WHERE SOLRECR.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLRECR.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLRECR.INTTIPOSEGUIMIENTO= 1
)) AS "Usuario Destino 1",
(
  select distinct(sr.varnomanalistareclu)
  from solicitudreclutamiento sr
  where sr.intidnumeroprovisionori = SOL.intidnumeroprovision) as "Usuario Destino 2",
(SELECT SOLREC.Varestaciondestino FROM SOLICITUDSEGUIMIENTO SOLREC
WHERE
SOLREC.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLREC.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLREC.INTTIPOSEGUIMIENTO= 1 AND
SOLREC.INTIDSOLICITUDSEGUIMIENTO = (
SELECT MAX(SOLRECR.INTIDSOLICITUDSEGUIMIENTO) FROM SOLICITUDSEGUIMIENTO SOLRECR
WHERE SOLRECR.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLRECR.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLRECR.INTTIPOSEGUIMIENTO= 1
)) AS "Estacion Destino 1",
(
  select distinct (cast('6.1 Revision de Perfil' as varchar2(80)))
  from solicitudreclutamiento sr
  where sr.intidnumeroprovisionori = SOL.intidnumeroprovision) as "Estación Destino 2"

FROM SOLICITUD SOL
  INNER JOIN PROCESO PRO ON SOL.intIdProceso = PRO.intIdProceso
  INNER JOIN PARAMETROS PAR ON SOL.intIdEstadoSolicitud = PAR.intCodParametro
  INNER JOIN SOLICITUDSEGUIMIENTO SS ON
             SOL.INTIDNUMEROPROVISION=SS.INTIDNUMEROPROVISION AND
               SOL.INTIDPROCESO=SS.INTIDPROCESO
INNER JOIN PASO PA ON SS.INTIDPASO=PA.INTIDPASO AND SS.INTIDPROCESO=PA.INTIDPROCESO
WHERE
UPPER(SS.varusuarioregistro) IN ('GRUPOIB.LOCAL/B10650')
 AND SS.INTIDSOLICITUDSEGUIMIENTO IN
                 (
                  SELECT MAX(SSE.INTIDSOLICITUDSEGUIMIENTO)
                  FROM SOLICITUDSEGUIMIENTO SSE
                  WHERE
                       SOL.INTIDNUMEROPROVISION=SSE.INTIDNUMEROPROVISION AND
                       SSE.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
                       UPPER(SSE.varusuarioregistro) IN (UPPER('GRUPOIB.LOCAL/B10650'))
                       GROUP BY SSE.INTIDNUMEROPROVISION
                  )      

userESTACIONdestino.jpg
0
enrique_aeo
Asked:
enrique_aeo
  • 3
2 Solutions
 
slightwv (䄆 Netminder) Commented:
Use NVL:

select ...
nvl(usuario_destino_1, usuario_destino_2 ),
nvl(estacion_destino_1, estacion_destino_2 ),
...
0
 
enrique_aeoAuthor Commented:
NOT UNDERSTAND, you can put the full code please
0
 
slightwv (䄆 Netminder) Commented:
Not really.  I can only guess since I don't have your setup I cannot test anything.

Just wrap the NVL call I provided around whatever returns usuario_destino_1 and  usuario_destino_2.  Again for the other two.
0
 
slightwv (䄆 Netminder) Commented:
Try the following.  It is a guess.

I suggest not using double quotes around aliases and I also don't suggest spaces in them either.


select nvl("Usuario Destino 1", "Usuario Destino 2") "Usuario Destino",
	nvl("Estacion Destino 1", "Estación Destino 2") "Estacion Destino"
from
(
SELECT
SOL.VARETIQPROVISION AS "Nro. Solicitud",
(SELECT SOLREC.Varnomusuariodestino FROM SOLICITUDSEGUIMIENTO SOLREC
WHERE
SOLREC.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLREC.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLREC.INTTIPOSEGUIMIENTO= 1 AND
SOLREC.INTIDSOLICITUDSEGUIMIENTO = (
SELECT MAX(SOLRECR.INTIDSOLICITUDSEGUIMIENTO) FROM SOLICITUDSEGUIMIENTO SOLRECR
WHERE SOLRECR.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLRECR.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLRECR.INTTIPOSEGUIMIENTO= 1
)) AS "Usuario Destino 1",
(
  select distinct(sr.varnomanalistareclu)
  from solicitudreclutamiento sr
  where sr.intidnumeroprovisionori = SOL.intidnumeroprovision) as "Usuario Destino 2",
(SELECT SOLREC.Varestaciondestino FROM SOLICITUDSEGUIMIENTO SOLREC
WHERE
SOLREC.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLREC.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLREC.INTTIPOSEGUIMIENTO= 1 AND
SOLREC.INTIDSOLICITUDSEGUIMIENTO = (
SELECT MAX(SOLRECR.INTIDSOLICITUDSEGUIMIENTO) FROM SOLICITUDSEGUIMIENTO SOLRECR
WHERE SOLRECR.INTIDNUMEROPROVISION=SOL.INTIDNUMEROPROVISION AND
SOLRECR.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
SOLRECR.INTTIPOSEGUIMIENTO= 1
)) AS "Estacion Destino 1",
(
  select distinct (cast('6.1 Revision de Perfil' as varchar2(80)))
  from solicitudreclutamiento sr
  where sr.intidnumeroprovisionori = SOL.intidnumeroprovision) as "Estación Destino 2"

FROM SOLICITUD SOL
  INNER JOIN PROCESO PRO ON SOL.intIdProceso = PRO.intIdProceso
  INNER JOIN PARAMETROS PAR ON SOL.intIdEstadoSolicitud = PAR.intCodParametro
  INNER JOIN SOLICITUDSEGUIMIENTO SS ON
             SOL.INTIDNUMEROPROVISION=SS.INTIDNUMEROPROVISION AND
               SOL.INTIDPROCESO=SS.INTIDPROCESO
INNER JOIN PASO PA ON SS.INTIDPASO=PA.INTIDPASO AND SS.INTIDPROCESO=PA.INTIDPROCESO
WHERE
UPPER(SS.varusuarioregistro) IN ('GRUPOIB.LOCAL/B10650')
 AND SS.INTIDSOLICITUDSEGUIMIENTO IN
                 (
                  SELECT MAX(SSE.INTIDSOLICITUDSEGUIMIENTO)
                  FROM SOLICITUDSEGUIMIENTO SSE
                  WHERE
                       SOL.INTIDNUMEROPROVISION=SSE.INTIDNUMEROPROVISION AND
                       SSE.INTIDDECISION IN (14,15,16,26,41,63,37,38) AND
                       UPPER(SSE.varusuarioregistro) IN (UPPER('GRUPOIB.LOCAL/B10650'))
                       GROUP BY SSE.INTIDNUMEROPROVISION
                  )      
)

Open in new window

0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now