Oracle - Obtener columnas en función del día del mes

 
Vista:

Obtener columnas en función del día del mes

Publicado por piti (3 intervenciones) el 02/10/2006 16:08:11
¿se puede hacer lo siguiente?

Obtener una consulta donde a parte de las típicas columnas de nombre, ... aparezcan una columna por día del mes que se especifique.

Por ejemplo:

Columna1: Nombre
Columna2: Apellidos
Columna3: 1
Columnsa4: 2
...
Columna N: 30

La generación del número de columnas dependa de los días que tenga el mes, febrero hasta el 28 ó 29, ...

Y después el valor de cada registro para la columna sea un 1, 0

es decir, que la consulta sea del tipo:

tal persona, los días 1,2,3,4 y 23, 24 están ocupadas, o disponibles, o lo que sea, es decir, que dichos dias estén con un valor diferente que el resto de días.

Partimos de un registro en la tabla original, por cada agrupación de días:

la persona x está ocupada desde el 1/mes hasta el 4/mes
otro registro que indica que está ocupada para 23/mes hasta 24/mes

es decir, en la tabla tengo un campo fecha desde y fecha hasta, que me indican el periodo que deberá salir marcado en la consulta que se busca.
Muchas gracias.
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

RE:Obtener columnas en función del día del mes

Publicado por Ricardo (84 intervenciones) el 12/10/2006 22:15:06
Fijate si te sirve esto:

select
decode(to_number(to_char(last_day(sysdate),'dd')),28,1,0) d28
,decode(to_number(to_char(last_day(sysdate),'dd')),29,1,0) d29
,decode(to_number(to_char(last_day(sysdate),'dd')),30,1,0) d30
,decode(to_number(to_char(last_day(sysdate),'dd')),31,1,0) d31
from dual

Después, reemplazá "dual" por la tabla que necesites, y "sysdate" por
la fecha que necesites...

Saludos
Ricardo.
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

RE:Obtener columnas en función del día del mes

Publicado por piti (3 intervenciones) el 17/10/2006 09:37:23
Si me sirve, pero a medias.

Si no entiendo mal, esta consulta pone un 1 en la columna en la que esté contenido el día, es deicr, si el 28 pertenece al sysdate, se muestra un 1 en la columna, más exactamente, si el último día es 28 aparecerá un 1 en la columna d28

Esto me sirve, pero necesito un poco más:

yo lo que necesito es: tengo una fecha desde y una fecha hasta. Si el día 28 está dentro de ese rango, debe aparecer un 1 en la columna d28.

Por ejemplo.
si tengo tres registro:
Fecha desde:1/1 hasta 4/1
Fecha desde:7/1 hasta 8/1
Fecha desde:10/1 hasta 15/1

debe aparecer un 1 en las columnas d1, d2, d3, d4, d7, d8, d10, d11, d12, d13, d14, d15 y el resto a cero.

Yo estoy intentándolo, cuando lo tenga, os lo pondré aquí.
Muchas gracias
Muchas 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