Oracle - consulta IF ayuda soy nueva

 
Vista:
sin imagen de perfil

consulta IF ayuda soy nueva

Publicado por Lady (3 intervenciones) el 23/10/2015 22:06:49
Ayuda, estoy aprendiendo en oracle tengo esta duda deseo agregar a mi query una condición

esta es la consulta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
  BRCH.BR,
  BRCH.SETTACCT,
  BRCH.CCY,
  BRCH.DEALNO,
  BRCH.PORTFOLIO,
  '' OBSERVACIONES
  FROM  BRCH
    INNER JOIN CODIGO_PORTAFOLIOS
    ON CODIGO_PORTAFOLIOS.BR = BRCH.BR
 
    WHERE CODIGO_PORTAFOLIOS.ADMINISTRACION = 'INTERNO'
      AND BRCH.SETTACCT NOT LIKE '%FUTUROS%'
      AND BRCH.BROKNO = '687'
      AND BRCH.PRODTYPE = 'RC'
      AND BRCH.CCYAMT > 0
      AND BRCH.REVDATE IS NULL
      AND DEALDATE>SYSDATE-1

Y deseo agragar la condición de al select y no se como:

1
2
3
4
5
6
IF BRCH.CCYAMT > 0 THEN
 PORTFOLIO = 'BRIX';
ELSE
IF BRCH.CCYAMT < 0 THEN
 PORTFOLIO = 'BRIX';
END IF;

pero con comentarios y no se como hacerlos:

1
2
IF BRCH.CCYAMT > 0 THEN
 PORTFOLIO = 'BRIX';

mensaje de comentario: portafolio activo.

1
2
IF BRCH.CCYAMT < 0 THEN
 PORTFOLIO = 'BRIX';

mensaje de comentario: portafolio pasivo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

consulta IF ayuda soy nueva

Publicado por Rafael (328 intervenciones) el 26/10/2015 11:41:56
A ver como Jack el Destripador por partes....

1. Dices que quieres evaluar cuando BRCH.CCYAMT sea mayor y cuando sea menor que cero. Pero en el WHERE pones:
AND BRCH.CCYAMT > 0
Por lo cual nunca sera menor a CERO.
Asi que es SEGURO que esto no ocurrira.

2. ¿El valor de PORTFOLIO sera el mismo para ambos casos, luego entonces de que te sirve evaluar?

3. ¿Y si fuese igual a CERO?

4. ¿Los comentarios donde los quieres poner como una columna extra?

Respondere a mis preguntas espero que luego te ayude a ti ...
1. Es un error no deberia incluirse en el WHERE.
2. No necesito evaluar el PORTFOLIO siempre sera 'BRIX'
3. No ponga nada.
4. No son comentarios debe ponerlo en Observaciones

Con estos 4 supuestos la consulta queda asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT BRCH.BR
     , BRCH.SETTACCT
     , BRCH.CCY
     , BRCH.DEALNO
     , 'BRIX' PORTFOLIO
     , CASE
           WHEN BRCH.CCYAMT > 0 THEN 'portafolio activo'
           WHEN BRCH.CCYAMT < 0 THEN 'portafolio pasivo'
           ELSE ''
       END OBSERVACIONES
FROM  BRCH
    INNER JOIN CODIGO_PORTAFOLIOS
            ON CODIGO_PORTAFOLIOS.BR = BRCH.BR
WHERE CODIGO_PORTAFOLIOS.ADMINISTRACION = 'INTERNO'
AND   BRCH.SETTACCT NOT LIKE '%FUTUROS%'
AND   BRCH.BROKNO = '687'
AND   BRCH.PRODTYPE = 'RC'
AND   BRCH.REVDATE IS NULL
AND   DEALDATE>SYSDATE-1


Espero te sirva y si eso un +1 no me viene mal.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

consulta IF ayuda soy nueva

Publicado por Lady (3 intervenciones) el 26/10/2015 21:39:07
Bueno, buenas tardes,

Que pena contigo...me sirvo mucho tu respuesta... ahora te respondo las preguntas...

1. Dices que quieres evaluar cuando BRCH.CCYAMT sea mayor y cuando sea menor que cero. Pero en el WHERE pones:

Esa condición no va.(disculpas )

2. ¿El valor de PORTFOLIO sera el mismo para ambos casos, luego entonces de que te sirve evaluar?

Son diferentes:

Por que esta condición solo estoy verificando los portafolios pero internos.
INNER JOIN CODIGO_PORTAFOLIOS
ON CODIGO_PORTAFOLIOS.BR = BRCH.BR

Where CODIGO_PORTAFOLIOS.ADMINISTRACION = 'INTERNO'

y de esta tabla necesito validar PORTFOLIO
para la condición los que solamente sean 'BRIX' hay más estados en la tabla PORTFOLIO

CASE
WHEN BRCH.CCYAMT > 0 THEN 'Capturar mensaje de pago portafolio activo' WHEN BRCH.PORTFOLIO = 'BRIX' THEN 'Capturar mensaje de pago portafolio activo'
WHEN BRCH.CCYAMT < 0 THEN 'Capturar mensaje de pago portafolio pasivo' WHEN BRCH.PORTFOLIO = 'BRIX' THEN 'Capturar mensaje de pago portafolio pasivo'
END AS OBSERVACION

3. ¿Y si fuese igual a CERO?

Necesito los resultados menores a cero y mayores a cero para identificar los valores negativos.

4. ¿Los comentarios donde los quieres poner como una columna extra?

Si, van en una columna diferente que se llama observaciones.

Te agradezco un montón.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

consulta IF ayuda soy nueva

Publicado por Leidy (3 intervenciones) el 26/10/2015 22:04:39
El query quedo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SELECT BRCH.BR AS BR
     , BRCH.SETTACCT
     , BRCH.CCY AS MONEDA
     , BRCH.CCYAMT
     , BRCH.DEALNO AS NUM_NEGOCIO
     , BRCH.DEALDATE
     , BRCH.INPUTDATE
     , BRCH.IOPER
     , BRCH.REVDATE
     , BRCH.REVOPER
     , BRCH.TRAD
     , BRCH.VERDATE
     ,BRCH.PORTFOLIO
     ,
CASE
   WHEN BRCH.CCYAMT > 0  THEN 'Capturar mensaje de pago'
   WHEN BRCH.CCYAMT < 0  THEN 'Notificar al bróker'
   END AS OBSERVACION
   FROM  BRCH
   INNER JOIN CODIGO_PORTAFOLIOS
   ON CODIGO_PORTAFOLIOS.BR = BRCH.BR
      WHERE CODIGO_PORTAFOLIOS.ADMINISTRACION = 'INTERNO'
         AND BRCH.SETTACCT NOT LIKE '%FUTUROS%'
         AND BRCH.BROKNO = '687'
         AND BRCH.PRODTYPE = 'RC'
         AND BRCH.CCYAMT <> 0
         AND BRCH.REVDATE IS NULL
         AND DEALDATE>SYSDATE-1000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

consulta IF ayuda soy nueva

Publicado por Rafael (328 intervenciones) el 27/10/2015 08:46:00
Perfecto y Mi +1????

grrrrr

Que bueno que te sirviera...
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar