Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Filas a Columnas

Hola que tal tengo una situacion me gustaria saber como hacer para que me aparescan las filas a columnas.

por que tengo el siguiente resultado con un select e inner join que utilizo



CONCEPTOS IDEMPLEADO CANTIDADES
123 4524 120
345 4524 45
456 4524 10
785 4524 45


y e leido algo de pivot pero no lo reconoce el firebird
Responder Con Cita
  #2  
Antiguo 07-04-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Todo tuyo...

http://www.clubdelphi.com/foros/show...ghlight=fjcg02

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 07-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
pero.. y que columnas quieres?
que codigo tiene tu consulta...
un poco mas de detalle por favor
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 07-04-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Código SQL [-]
select * FROM CONCEPTOS_NO INNER JOIN PAGOS_NOMINA_DET
on PAGOS_NOMINA_DET.CONCEPTO_NO_ID = CONCEPTOS_NO.CONCEPTO_NO_ID INNER JOIN EMPLEADOS
ON EMPLEADOS.EMPLEADO_ID = PAGOS_NOMINA_DET.EMPLEADO_ID INNER JOIN PAGOS_NOMINA
ON EMPLEADOS.EMPLEADO_ID = PAGOS_NOMINA.EMPLEADO_ID    where PAGOS_NOMINA.NOMINA_ID=83858


y esto despliega asi en general

Conceptos Monto Epleados
x1_________ 8.50___ 555
x2_________ 5.50___ 555
x3_________ 6.50___ 555
x4_________ 2.50___ 555
x1_________ 8.50___ 666
x2_________ 5.50___ 666
x3_________ 6.50___ 666
x4_________ 2.50___ 666

y quisiera que se agrupara por empleado pero no logro hacerlo y que los conceptos aparescan como columnas

Empleados x1 x2 x3 x4
555________ 8.50__5.50_6.50_2.50
666________ 8.50__5.50_6.50_2.50
Responder Con Cita
  #5  
Antiguo 07-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Puedes hacer algo asi como esto (usare campos imaginarios)

Código Delphi [-]
 
Select Id_empleado, 
Case when Campo = 'x1', campoimporte else 0 end as x1,
Case when Campo = 'x2', campoimporte else 0 end as x2,
Case when Campo = 'x3', campoimporte else 0 end as x3,
Case when Campo = 'x4', campoimporte else 0 end as x4
from ....

el problema con esta consulta es que debes conocer de antemano cada uno de los conceptos (campo)
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 07-04-2011 a las 19:15:08. Razón: errores ortograficos
Responder Con Cita
  #6  
Antiguo 07-04-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por oscarac Ver Mensaje
Puedes hacer algo asi como esto (usare campos imaginarios)


Código Delphi [-]
Select Id_empleado,
Case when Campo = 'x1', campoimporte else 0 end as x1,
Case when Campo = 'x2', campoimporte else 0 end as x2,
Case when Campo = 'x3', campoimporte else 0 end as x3,
Case when Campo = 'x4', campoimporte else 0 end as x4
from ....





el problema con esta consulta es que debes conocer de antemano cada uno de los conceptos (campo)

y esto como lo podria integrar a el query que muestro arriba,, lo ingresaria des pues del where o despues de los inner join...
Responder Con Cita
  #7  
Antiguo 07-04-2011
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 18
Gallosuarez Va por buen camino
Talking Posible solución ...

amerika111:

Ese problema lo solucionas con CTE (Common Table Expressions), que es el equivalente al uso de PIVOT para otras bases de datos.

Aque viene un ejemplo de su uso:
http://www.firebirdsql.org/refdocs/l...d21-select-cte

Saludos,
Gerardo Suárez Trejo
Responder Con Cita
  #8  
Antiguo 07-04-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Cita:
Empezado por fjcg02 Ver Mensaje
Me reitero como la sidra el gaitero.

He ahí la solución. Aunque no entiendas ni un carajo, si entiendes cómo se hace la llamada, ya tienes lo que quieres. La procedure te devuelve la query montada, que será la que tienes que ejecutar.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #9  
Antiguo 07-04-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por fjcg02 Ver Mensaje
Me reitero como la sidra el gaitero.

He ahí la solución. Aunque no entiendas ni un carajo, si entiendes cómo se hace la llamada, ya tienes lo que quieres. La procedure te devuelve la query montada, que será la que tienes que ejecutar.

Saludos

si ya cheque tu procedimiento pero es que no necesito sumar nada toda la info ya la tengo en tablas nadas mas que nose como acomodarla por empleado... ahorita el empleado se repite tantas veces tenga conceptos de pago si tiene 8 conceptos me aparece 8 veces por que los conceptos me aparecen en filas y no en columnas

Última edición por amerika111 fecha: 07-04-2011 a las 22:28:56.
Responder Con Cita
  #10  
Antiguo 07-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mmm si pudieras exportar tus tablas a un... no se access quiza y poder mandarlar para ver que se puede hacer
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #11  
Antiguo 07-04-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Pongamos luz en el asunto...

Espero que tengas algo de destreza.

Ejecuta la sentencia para que te cree la procedure CREARPIVOTE

Una vez tengas creado el procedimiento, llama al mismo con estos parámetros ( ten en cuenta que estoy suponiendo algunas cosas )


CREARPIVOTE ( 'TUTABLA','IDEMPLEADO','CONCEPTOS','MONTO','CONDICIONES')

TUTABLA será la tabla + las inner joins de todas las tablas que intervienen
IDEMPLEADO es el campo por el que quieres agrupar las filas
CONCEPTOS es el campo que quieres que pase de filas a columnas. No debiera haber demasiados conceptos en la tabla.
MONTO es el campo que quieres sumar por cada CONCEPTO ( El procedimiento sólo suma )
CONDICIONES filtro que aplica si procede Fecha desde hasta, ...

el resultado es una cadena con la query generada. Será algo del tipo...

Código SQL [-]
Select IDEMPLEADO,
sum(Case when Campo = 'x1', MONTO else 0 end as x1,
sum(Case when Campo = 'x2', MONTO else 0 end as x2,
sum(Case when Campo = 'x3', MONTO else 0 end as x3,
sum(Case when Campo = 'x4', MONTO else 0 end as x4,
...
from TUTABLA
WHERE CONDICIONES

...que es lo que propone oscarac, lo que pasa es que es automático, y no debes saber el nº de columnas de antemano.

Luego copias esa select y la ejecutas en el ibexpert o en editor que utilices.

Ya nos dirás.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #12  
Antiguo 07-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
se ve interesante
pero... debe existir alguna otra forma...
aunque si amerika111 no tiene problemas podria llamar a ese procedimiento y como dices tu armar la cadena y listo
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta



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
Consulta con Filas en Columnas afxe SQL 3 30-01-2011 14:52:18
Consulta de Filas y Columnas mjjj SQL 1 19-02-2010 22:24:36
Filas y Columnas pmcastilla Varios 2 07-12-2007 20:22:01
ocultar filas o columnas karla Servers 1 10-08-2006 20:03:18
Filas a columnas nightynvid MS SQL Server 0 31-05-2006 16:22:44


La franja horaria es GMT +2. Ahora son las 16:43:36.


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