Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 23
AzidRain Va camino a la fama
ese codigo no le va a servir porque si te fijas necesita que en cada fila aparezcan los datos de todos los meses. Saldria algo como:

Código:
 ENERO -----febrero ----marzo
  01/01/07     null          null
     null       01/02/07    null
     null         null         01/03/07
y lo que el quiere es:
Código:
 ENERO -----febrero ----marzo
  01/01/07    01/02/07  01/03/07
no veo como hacerlo sin usar al menos una tabla temporal o algun algoritmo para llenar la tabla final.

SQL Server y otros tienen una funcion transform y PIvot que en teoría puede hacer eso.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #2  
Antiguo 05-06-2007
Avatar de rruz
[rruz] rruz is offline
Miembro Premium
 
Registrado: jun 2006
Posts: 146
Poder: 21
rruz Va por buen camino
Cita:
Empezado por AzidRain
ese codigo no le va a servir porque si te fijas necesita que en cada fila aparezcan los datos de todos los meses. Saldria algo como:

Código:
 ENERO -----febrero ----marzo
  01/01/07     null          null
     null       01/02/07    null
     null         null         01/03/07
y lo que el quiere es:
Código:
 ENERO -----febrero ----marzo
  01/01/07    01/02/07  01/03/07
no veo como hacerlo sin usar al menos una tabla temporal o algun algoritmo para llenar la tabla final.

SQL Server y otros tienen una funcion transform y PIvot que en teoría puede hacer eso.
AziRain

si ves lo que el plantea

enero febrero mayo
============================
01/01/2007 01/02/2007 01/05/2007
15/05/2007

lo que yo plantee devuelve

enero febrero mayo
============================
01/01/2007 01/02/2007 01/05/2007
15/05/2007 null null

o podria reemplazar el null por lo que el quiera.

Yo creo que si le sirve, porque no esperas que responda el interesado y de su veredicto y ves si sirve o no.

Por otra parte sin duda usar pivot le va a solucionar su problema, pero eso no lo sabremos (si lo puede utilizar o no) hasta conocer que motor SQL usa.


Saludos.
Responder Con Cita
  #3  
Antiguo 05-06-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 23
lucasarts_18 Va por buen camino
Hola:

Este tema por lo menos lo resuelvo en php mediante arreglos, y en html voy jugando con los valores del arreglo, empero, es algo un poco complicado, lo cual ni siquiera a mí me satisface .

Por otro lado he escuchado que los cubos SQL resuelven este tipo de problemas , pero no sigo argumentando mas allá porque mis conocimientos no llegan a tal punto...

Hasta Luego .-
__________________
No todo es como parece ser...
Responder Con Cita
  #4  
Antiguo 08-06-2007
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 296
Poder: 20
GustavoCruz Va por buen camino
Smile columnas dinámicas...???

Es cierto lo que afirma AzidRain.
creo que tendré que lanzar una consulta para averiguar cuántos registros "Meses" se encuentran en la tabla inicial, luego se creará la table temporal con el número de meses resultantes que pueden ser 48, es decir una table que tendrá por lo menos 48 columnas y luego pasar de la tabla inicial a la tabla temporal. Esa es la solución que me he planteado por mucho tiempo y me imaginé que podría haber otra solución...

Gracias por tados su aportes y el interés que me prestaron; si hay algún otro aporte, con gusto lo atenderé.

GustavoCruz
Responder Con Cita
  #5  
Antiguo 08-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Para evitar la creación de una tabla, podría usarse un Procedimiento almacenado (Store Procedure). Como no se comenta si es paradox, firebird, mySql, etc... pues mejor no digo nada y me quedo callado.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 09-06-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Bueno chicos, discrepo un poco de lo dicho anteriormente.

ACotemos. A no ser que sea un caso excepcional, los humanos funcionamos por años. Esto quiere decir que los datos devueltos por la consulta serán máximo 32 filas ( titulo y dias del mes ) y 12 columnas ( meses del año).

Podemos no volvernos locos y utilizar una string-grid.

Si queremos hacer una consulta que devuelva todo a la primera y esperando no colarme, debo suponer que sólo puede haber un registro por día, sino no tendría sentido.
Y una vez dicho esto, podemos probar con lo siguiente

Código SQL [-]
SELECT 
max(case when funcionmes(fecha)=1 then fecha else null) as Enero,
max(case when funcionmes(fecha)=2 then fecha else null) as Febrero, 
max(case when funcionmes(fecha)=3 then fecha else null) as MArzo,
...
max(case when funcionmes(fecha)=12 then fecha else null) as Diciembre
FROM tabla
WHERE fecha BETWEN 1/1/Año and 31/12/año
GROUP BY funciondia( fecha )

Bueno, antes de enviar el mensaje he intentado probar en firebird y no hay 'pelotas' para encontrar las funciones mes y dia de una fecha.

En otros motores entiendo que no debiera haber ningún problema adecuandolos un poco.

Saludos a todos

A ver si alguine se anima y los puede probar en diferentes motores.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por fjcg02 fecha: 09-06-2007 a las 00:22:22.
Responder Con Cita
  #7  
Antiguo 09-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Puede que diga una tontería, ¿Pero no se podría lograr este efecto con los componentes de la paleta Decision Cube?

Digo... en una de esas... lanzar la consulta y que despues se pivoteen los resultados con los componentes.

Creería que para eso estan... para armar cubos de datos y pivotearlos.
Si dije algo demasiado tonto, disculpen. No he usado Los Decision Cube.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda con columnas en DBF NeWsP Tablas planas 11 25-07-2006 19:28:38
Columnas en QReport jdangosto Impresión 1 28-09-2004 16:57:53
Descripcion Columnas OmarPerez Firebird e Interbase 1 16-04-2004 19:50:13
columnas en rxrichedit mosorio Varios 0 14-04-2004 13:36:52
Dos columnas karlita_cb Tablas planas 1 26-03-2004 02:23:21


La franja horaria es GMT +2. Ahora son las 04:05:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi