Cross table
Como se puede hacer una consulta entre dos tablas que de como resultado una referencia cruzada, ejemplo
Tabla 1
Campos
CodigoTienda
Fecha
Cantidad
Tabla 2
CodigoTienda
NombreTienda
y salga asi
01/02 02/02 03/02 Total
Jockey 50 25 16
Basadre 70 83 27
Total
las filas de la tabla1 del campo fecha salgan dinamicamente como columnas en el listado, se puede hacer con sql
Tabla 1
Campos
CodigoTienda
Fecha
Cantidad
Tabla 2
CodigoTienda
NombreTienda
y salga asi
01/02 02/02 03/02 Total
Jockey 50 25 16
Basadre 70 83 27
Total
las filas de la tabla1 del campo fecha salgan dinamicamente como columnas en el listado, se puede hacer con sql
INSERT DE ROTACIÓNEl pivoting insert o insert de rotación, es un subtipo del insert all incondicional Se utiliza para convertir un registro de una tabla en multiples registros para luego insertarlos en otra tabla.
Ejemplo:Tenemos una tabla llamada ALBARAN_DE_HORAS en la que los empleados introducen las horas trabajadas cada día de la semana. Tenemos otra tabla INFORMACION_HORAS_ALBARAN en la que tenemos la informacion de las horas trabajadas. Queremos convertir filas de la tabla ALBARAN_DE_HORAS en columnas de la tabla INFORMACION_HORAS_ALBARAN
Tabla: ALBARAN_DE_HORAS
No_empl Semana lun mart mier jue vie H_extras
1025 7 8 8 8 8 7 2
1026 7 8 8 8 8 7 4
SQL> INSERT ALL
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO, SEMANA,H_LUNES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_MARTES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_MIERCOL)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_JUEVES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_VIERNES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_EXTRAS)
SELECT * FROM ALBARAN_DE_HORAS;
12 rows created.
Comprobamos lo que se ha insertado:
SQL> SELECT * FROM
INFORMACION_HORAS_ALBARAN ORDER BY 1;
No_EMP SEMANA HORAS
----------------------------
1025 7 8
1025 7 8
1025 7 8
1025 7 2
1025 7 7
1025 7 8
1026 7 8
1026 7 8
........ .... ....
12 rows selected.
Ejemplo:Tenemos una tabla llamada ALBARAN_DE_HORAS en la que los empleados introducen las horas trabajadas cada día de la semana. Tenemos otra tabla INFORMACION_HORAS_ALBARAN en la que tenemos la informacion de las horas trabajadas. Queremos convertir filas de la tabla ALBARAN_DE_HORAS en columnas de la tabla INFORMACION_HORAS_ALBARAN
Tabla: ALBARAN_DE_HORAS
No_empl Semana lun mart mier jue vie H_extras
1025 7 8 8 8 8 7 2
1026 7 8 8 8 8 7 4
SQL> INSERT ALL
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO, SEMANA,H_LUNES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_MARTES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_MIERCOL)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_JUEVES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_VIERNES)
INTO INFORMACION_HORAS_ALBARAN
VALUES (NUM_EMPLEADO,SEMANA,H_EXTRAS)
SELECT * FROM ALBARAN_DE_HORAS;
12 rows created.
Comprobamos lo que se ha insertado:
SQL> SELECT * FROM
INFORMACION_HORAS_ALBARAN ORDER BY 1;
No_EMP SEMANA HORAS
----------------------------
1025 7 8
1025 7 8
1025 7 8
1025 7 2
1025 7 7
1025 7 8
1026 7 8
1026 7 8
........ .... ....
12 rows selected.
