FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
consulta en sql
Hola tengo un problema con una consulta que quiero hacer.
Tengo 1 tabla que contiene la sgte información Oficina Ruta Ingreso 1 A 100 1 B 70 1 C 200 2 A 200 2 D 150 2 E 250 3 A 100 3 B 200 ¿cómo puedo hacerle para obtener el sigte resultado? rutas oficina A B C D E 1 100 70 200 2 200 150 250 3 100 200 Es decir combinar de una misma tabla renglones y columnas. donde cada oficina puede manejar hasta 500 rutas Gracias de antemano |
#2
|
||||
|
||||
El tema de crear nuevos campos en el resultado de la consulta no creo que te funcione.
Deberías hacerlo a mano, recorriendo los resultados y montando la grid desligada de la base de datos. Algo así como: En un Query montas la sentencia select * from tabla order by oficina Creas una grid con 1 columna y 2 filas. La idea es ir buscando la ruta en la grid, y si no está añadirla. Por esto montamos una función que devuelva la columna de la ruta, y cree la nueva columna si la ruta no está:
Y recorremos los resultados del query montando la tabla:
Ten en cuenta que el código lo he escrito directamente aquí, o sea que habrá algun error, pero la idea espero que te hays quedado clara. Un saludo Edu Última edición por jmariano fecha: 23-09-2005 a las 13:06:58. Razón: Formateo del código usando las etiquetas [delphi] |
#3
|
|||
|
|||
Gracias
Gracias lo voy a poner en practica
|
#4
|
||||
|
||||
Saludos
Revisa estos Hilos: http://www.clubdelphi.com/foros/arch...ncias+cruzadas http://www.clubdelphi.com/foros/showthread.php?t=17253 Especialmente este post: http://www.clubdelphi.com/foros/show...95&postcount=2 Creo que te pueden ayudar mucho
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#5
|
|||
|
|||
Gracias
Gracias los voy a checar
Saludos |
#6
|
|||
|
|||
Ayuda con SQL
Es muy útil sólo que en mi caso una oficina puede tener movimiento hasta en 500 rutas y tendria que poner fijos los numeros de las rutas para poder convertirlas a columnas y si en algún momento se da de alta otra ruta pues tendría que estar modificando el query.
Voy a utilizar esto combinado con tablas temporales para almacenar el movimiento de cada ruta. Michismias gracias me ayudo un chorral como decimos por aca en el Norte. Saludos |
#7
|
||||
|
||||
En que motor de base de datos quieres obtener los resultados que planteas?¿
__________________
Optimus Prime |
#8
|
|||
|
|||
En SQL 2000
gracias |
#9
|
||||
|
||||
Ayer respondí en otra entrada, pero no estaba muy certero porque era tarde. Echale un vistazo a este tema, que está un poco más currado.
Query Columnas: SELECT distinct Ruta FROM TABLA ORDER BY Ruta Ruta A B C ... Query Consulta: Es la que vamos a montar dinámicamente Consulta.SQL.Clear; Consulta.SQL.Add( 'SELECT Oficina '); Columnas.Open; while not Columnas.eof begin Consulta.SQL.Add( ', SUM(CASE Ruta WHEN '+Quotedstr(Columnas.Fields[0].AsString)+' THEN '+Ingreso+' ELSE 0 END) AS'+ Quotedstr(Columnas.Fields[0].AsString)'; Columnas.next; end Consulta.SQL.Add( ' FROM TABLA GROUP BY Oficina'); Consulta.Open // Consulta antes de hacer el OPEN tendrá algo parecido a esto SELECT Oficina , SUM(CASE Ruta WHEN 'A'THEN '+Ingreso+' ELSE 0 END) AS A , SUM(CASE Ruta WHEN 'B'THEN '+Ingreso+' ELSE 0 END) AS B ... FROM TABLA GROUP BY Oficina Cuando crees una nueva ruta, saldrá en la query de Columnas oficina A B C D E 1 100 70 200 2 200 150 250 3 100 200 espero que te sirva de ayuda. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#10
|
||||
|
||||
Sabes maite, hace poco encontre en la red un procedimiento que hacia esto de pivotear una tabla, busca en google por pivotear tabla y por ahi te debe aparecer, es que en estos momentos no recuerdo el link.
__________________
Optimus Prime |
#11
|
|||
|
|||
gracias
|
#12
|
||||
|
||||
Hola maite, pues mira que buscando en mi desordenada memoria y con la ayuda de san google aqui esta en link que te comentaba, espero y te sirve Pivot_Table
__________________
Optimus Prime |
#13
|
|||
|
|||
Mil gracias te la bañaste como decimos por áca en el Norte de Mty, México.
Saludos |
#14
|
||||
|
||||
Nos cuentas como te fue con el procedimiento, haber si te ha servido, saludos desde colombia.
__________________
Optimus Prime |
|
|
|