Oracle - Seleccionar registro dando prioridad a un parametro

 
Vista:
sin imagen de perfil

Seleccionar registro dando prioridad a un parametro

Publicado por MARKO (2 intervenciones) el 25/03/2014 23:13:47
buen día LWP regreso a uds con una duda

tengo una base de datos en un servidor oracle remoto al cual me conecto mediante Toad for Oracle, dicha base de datos contiene la tabla precios:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FECHA_PUBLICACION------------PRECIO------------HORA--------------------HORA_PUBLICACION
                     2013-06-01-----------------125.00-----------------07----------------------144535
                     2013-06-01-----------------130.00-----------------08----------------------144535
                     2013-06-01-----------------131.25-----------------09----------------------144535
                     2013-06-01-----------------129.00-----------------07----------------------DEFINITIVO
                     2013-06-01-----------------128.00-----------------08----------------------DEFINITIVO
                     2013-06-01-----------------130.00-----------------09----------------------DEFINITIVO
                     2013-06-02-----------------130.00-----------------07----------------------131035
                     2013-06-02-----------------130.00-----------------08----------------------131035
                     2013-06-02-----------------130.00-----------------09----------------------131035
                     2013-06-03-----------------130.00-----------------07----------------------150918
                     2013-06-03-----------------130.00-----------------08----------------------150918
                     2013-06-03-----------------130.00-----------------09----------------------150918
                     2013-06-03-----------------131.00-----------------07----------------------DEFINITIVO
                     2013-06-03-----------------135.00-----------------08----------------------DEFINITIVO
                     2013-06-03-----------------122.00-----------------09----------------------DEFINITIVO
                                               .
                                               .
                                               .


Necesito seleccionar los registros por rangos de FECHA_PUBLICACION, esto no es problema,

el problema reside en HORA_PUBLICACION ya que necesito un query que para cada una de las FECHA_PUBLICACION seleccione los registros que en HORA_PUBLICACION tengan DEFINITIVO y si para esa fecha no hay ninguno que tenga en HORA_PUBLICACION = DEFINITIVO entonces que tome el que tiene el integer que representa la fecha de publicacion

para ampliarme más el resultado del query en la tabla de arriba quedaría asi:

1
2
3
4
5
6
7
8
9
10
FECHA_PUBLICACION------------PRECIO------------HORA--------------------HORA_PUBLICACION
                     2013-06-01-----------------129.00-----------------07----------------------DEFINITIVO
                     2013-06-01-----------------128.00-----------------08----------------------DEFINITIVO
                     2013-06-01-----------------130.00-----------------09----------------------DEFINITIVO
                     2013-06-02-----------------130.00-----------------07----------------------131035
                     2013-06-02-----------------130.00-----------------08----------------------131035
                     2013-06-02-----------------130.00-----------------09----------------------131035
                     2013-06-03-----------------131.00-----------------07----------------------DEFINITIVO
                     2013-06-03-----------------135.00-----------------08----------------------DEFINITIVO
                     2013-06-03-----------------122.00-----------------09----------------------DEFINITIVO

Gracias por adelantado.
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

Seleccionar registro dando prioridad a un parametro

Publicado por luis pablo (235 intervenciones) el 26/03/2014 16:11:41
Hola, puedes explicar cual es tu problema y si te sale un mensaje de error al ejecutar tu query ?
Puedes enviar tu sentencia select para poder orientarte.


Saludos


Luis
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

Seleccionar registro dando prioridad a un parametro

Publicado por MARKO (2 intervenciones) el 26/03/2014 16:32:18
el problema reside en que en una fecha puede haber:

a) una sola publicación entonces en HORA_PUBLICACIÓN habrá un integer representando la hora

b)dos publicaciones una con HORA_PUBLICACION = a un integer representando la hora y otra con HORA_PUBLICACION = DEFINITIVO

lo que necesito es un query me devuelva los registros contenidos en un rango de fechas pero que en los días que existan dos publicaciones solo devuelva los que tienen en HORA_PUBLICACION = DEFINITIVO

hablando de querys mi problema es como decirle que le dé prioridad a HORA_PUBLICACION = DEFINITIVO cuando exista.

1
Select * from precios where FECHA_PUBLICACION between Date '2013-06-01' and Date '2013-06-20' and (COMO LE DOY PRIORIDAD A HORA_PUBLICACION = DEFINITIVO SI ES QUE EXISTE????)


esta es la tabla (ojo con los días 01 y 03 de junio):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FECHA_PUBLICACION------------PRECIO------------HORA--------------------HORA_PUBLICACION
                     2013-06-01-----------------125.00-----------------07----------------------144535
                     2013-06-01-----------------130.00-----------------08----------------------144535
                     2013-06-01-----------------131.25-----------------09----------------------144535
                     2013-06-01-----------------129.00-----------------07----------------------DEFINITIVO
                     2013-06-01-----------------128.00-----------------08----------------------DEFINITIVO
                     2013-06-01-----------------130.00-----------------09----------------------DEFINITIVO
                     2013-06-02-----------------130.00-----------------07----------------------131035
                     2013-06-02-----------------130.00-----------------08----------------------131035
                     2013-06-02-----------------130.00-----------------09----------------------131035
                     2013-06-03-----------------130.00-----------------07----------------------150918
                     2013-06-03-----------------130.00-----------------08----------------------150918
                     2013-06-03-----------------130.00-----------------09----------------------150918
                     2013-06-03-----------------131.00-----------------07----------------------DEFINITIVO
                     2013-06-03-----------------135.00-----------------08----------------------DEFINITIVO
                     2013-06-03-----------------122.00-----------------09----------------------DEFINITIVO
                                               .
                                               .
                                               .

este es el resultado que necesito

1
2
3
4
5
6
7
8
9
10
FECHA_PUBLICACION------------PRECIO------------HORA--------------------HORA_PUBLICACION
                     2013-06-01-----------------129.00-----------------07----------------------DEFINITIVO
                     2013-06-01-----------------128.00-----------------08----------------------DEFINITIVO
                     2013-06-01-----------------130.00-----------------09----------------------DEFINITIVO
                     2013-06-02-----------------130.00-----------------07----------------------131035
                     2013-06-02-----------------130.00-----------------08----------------------131035
                     2013-06-02-----------------130.00-----------------09----------------------131035
                     2013-06-03-----------------131.00-----------------07----------------------DEFINITIVO
                     2013-06-03-----------------135.00-----------------08----------------------DEFINITIVO
                     2013-06-03-----------------122.00-----------------09----------------------DEFINITIVO

gracias
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
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Seleccionar registro dando prioridad a un parametro

Publicado por Rafael (328 intervenciones) el 27/03/2014 13:38:18
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
SELECT FECHA_PUBLICACION,
       PRECIO,
       HORA,
       CASE HORA_PUBLICACION
           WHEN '999999' THEN 'DEFINITIVO'
           ELSE HORA_PUBLICACION
       END HORA_PUBLICACION
FROM (
       SELECT FECHA_PUBLICACION,
                       PRECIO,
                       HORA,
                       MAX(HORA_PUBLICACION) HORA_PUBLICACION
       FROM    (
              SELECT FECHA_PUBLICACION,
                     PRECIO,
                     HORA,
                     CASE HORA_PUBLICACION
                         WHEN 'DEFINITIVO' THEN '999999'
                         ELSE HORA_PUBLICACION
                     END HORA_PUBLICACION
              FROM PRECIOS
              WHERE FECHA_PUBLICACION BETWEEN TO_DATE('2013-06-01', 'YYYY-MM-DD')
              AND TO_DATE('2013-06-20', 'YYYY-MM-DD')
       )
       GROUP BY FECHA_PUBLICACION, PRECIO,HORA)
ORDER BY 1,2,3
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