Columna

Hola,
Quiero saber como puedo recuperar los datos de una columna en 3 columnas distintas, es decir, tengo una columna de fecha, por ejemplo, que va desde el 01-OCT-08 al 31-DIC-08.. Necesito recuperar los datos pero que en una columna este Octubre en la de a lado Noviembre y finalmente diciembre.. He probado volcando inicialmente los datos que necesito en una tabla temporal pero ya no se me ocurre nada más..
Espero haber sido lo suficientemente claro, es que yo mismo quede mareado con este tema... Muchas Gracias!

1 Respuesta

Respuesta
1
No te entendí bien que es lo que quieres mostrar, entiendo que es la suma de un determinado valor (de todas maneras la solución que te daré te servirá para cualquier cosa).
Tienes que utilizar funciones CASE, no me mencionas la base de datos, hago un ejemplo para Oracle.
La idea es por cada columna preguntar si se trata del mes que nos interesa, de serlo sumamos el dato, de lo contrario se suma cero.
Si requieres mostrar más columnas deberás agrupar la consulta por dichos campos (en mi caso campos_a_mostrar).
La consulta quedaría de la siguiente manera:
select campos_a_mostrar,
sum(
  case
    when to_char(f_actual, 'mm') = '10' then columna_a_sumar
    else 0
  end ) valor_octubre,
sum(
  case
    when to_char(f_actual, 'mm') = '11' then columna_a_sumar
    else 0
  end ) valor_noviembre,
sum(
  case
    when to_char(f_actual, 'mm') = '12' then columna_a_sumar
    else 0
  end ) valor_diciembre
from nombre_tabla
group by campos_a_mostrar;
Si se trata de otra base de datos deberás modificar la parte de cómo se identifica el mes (to_char) por lo que corresponda.
Cualquier cosa me avisas.
http://www.thedataage.com
Muchas Gracias por responder!! Pero necesito hacer algo como esto;
Día Octubre Noviembre Diciembre
1 Dato Dato Dato
2 Dato Dato Dato
3 Dato Dato Dato
4 Dato dato DAto
Hasta 30 o 31
Originalmente al realizar el select me estira en la misma columna primero todos los datos de Octubre, luego los de noviembre y diciembre, uno bajo el otro... La base de Datos esta En Oracle, ¿existe alguna manera de hacer esto?... Es que necesito que los datos queden así para luego realizar un gráfico en asp a partir de ellos...
Muchas Gracias por tu tiempo...
Según lo que te decía al inicio y lo que tu me dices el dato a agrupar es to_char(la fecha, 'dd')
Así es como lo necesitas:
select to_char(laFecha, 'dd') dia,
       nvl(sum(decode(to_char(laFecha, 'mm'), '10', elDato, 0)), 0) octubre,
       nvl(sum(decode(to_char(laFecha, 'mm'), '11', elDato, 0)), 0) noviembre,
       nvl(sum(decode(to_char(laFecha, 'mm'), '12', elDato, 0)), 0) diciembre
from laTabla
group by to_char(laFecha, 'dd');
Esta forma es similar a la que te presenté antes, salvo que en lugar de case función valida para varias bases de datos utilizo decode función propia de Oracle.
Cualquier cosa me avisas.
[color=#3366b9]http://www.thedataage.com[/color]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas