![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
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...
...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 - |
|
#2
|
||||
|
||||
|
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..... |
|
#3
|
||||
|
||||
|
Cita:
Se ve interesante el tema del WITH [RECURSIVE] pero a estas horas no tengo el cuerpo para jotas. Además, es para FB 2.1 o superior, por lo que no sirve para todas las versiones. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#4
|
|||
|
|||
|
pues trate de hacerlo asi pero nop no error tras error....
WITH EMPLEADO_ID AS ( SELECT NOMBRE_COMPLETO,PUESTO_NO_ID,DEPTO_NO_ID,SALARIO_DIARIO FROM EMPLEADOS GROUP BY EMPLEADOS.EMPLEADO_ID ) SELECT DISTINCT DIAS_TRAB,HORAS_TRAB,HORAS_EXT,FORMA_PAGO FROM PAGOS_NOMINA LEFT JOIN EMPLEADOS ON PAGOS_NOMINA.EMPLEADO_ID = EMPLEADOS.EMPLEADO_ID LEFT JOIN PAGOS_NOMINA_DET ON CONCEPTOS_NO.CONCEPTO_NO_ID=PAGOS_NOMINA_DET.CONCEPTO_NO_ID ; subo el diagrama que mas o menos lo tengo asi... para saber si se puede realizar, con este codigo me despliega todos los conceptos del empleado en forma de filas si cuenta con 8 conceptos repite al empleado 8 veces por que cada concepto viene con empleadoid, entonces por eso queria ver la forma de pasar los conceptos a columnas y que empleados aparecienran en filas. 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 Última edición por amerika111 fecha: 29-07-2011 a las 01:07:25. |
|
#5
|
||||
|
||||
|
mmmm que base de datos Usas?
quiza sea absurda la pregunta pero quiero estar seguro
__________________
Dulce Regalo que Satanas manda para mi..... |
|
#6
|
|||
|
|||
|
Microsip con firebird
|
|
#7
|
|||
|
|||
|
amerika111:
Lo sorprendente sería que dijeras que ese código te hubiera funcionado. Mira, no creo que estés entendiendo el concepto de CTE's (veo que, además de estar pésimamente implementado, el concepto no se está entendiendo). Por otro lado, en este mismo foro ya se había tratado este tema con anterioridad. El compañero fjcg02 mencionó entonces en aquella ocasión que utilizar CTE's no resolvía el problema si existían varios conceptos. Lo cual no es un problema, puesto que se resuelve utilizando bloques ejecutables (Execute Block). Que es mas o menos lo que él hace en dicho procedimiento almacenado, con la diferencia que el código resultante es sumamente robusto y eficiente (amen de ser una solución elegante). Otra cosa, el código completo se puede armar desde la misma aplicación (ventaja de hacerlo con Execute block). Bueno, hecha esta aclaración le digo a amerika111 que primero tiene que entender bien el concepto. Resolver su problema no debe de llevarse mucho tiempo. Saludos, Gerardo Suárez Trejo PD. Estoy creando tutoriales que tratan todas estas cuestiones ... espero pronto subirlos para haber si les puede ser útiles a alguien... saludos nuevamente ... |
|
#8
|
||||
|
||||
|
bbbbbbbbbbbbbbbbbbbbbbbbbb
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#9
|
||||
|
||||
|
Llevo un rato intentando entender el WITH este del demonio, y no acabo de cogerle el punto ...
![]() ![]()
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|