Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos
Tengo una duda que no sé cómo resolver!
Por una parte tengo una tabla con:
TABLA 1:
EDIFICIO PERIODO NUMERO
1 P1 24
2 P2 34
3 P3 17
Y otra tabla con:
TABLA 2:
EDIFICIO VALOR_P1 VALOR_P2 VALOR_P3
1 54 47 12
2 14 67 46
3 24 34 57
¿Cómo puedo hacer para unir el campo PERIODO de TABLA_1 con los 3 campos VALOR_P1,VALOR_P2 ,VALOR_P3?
Necesito unirlos para hacer varios cálculos.
No sé cómo enfocarlo!
Gracias.
Un saludo.
Hola Alexis, lo puedes hacer de la siguiente manera:
Tabla:
LOAD * FROM Tabla1.qvd (qvd)
;
INNER JOIN
LOAD * FROM Tabla2.qvd (qvd)
;
Saludos
Juan
tienes que hacer un for contando los campos de tabla Tabla2 y luego hacer un join
Tabla1:
load * Inline
[EDIFICIO,PERIODO,NUMERO
1,P1,24
2,P2,34
3,P3,17];
Tabla2:
load * Inline
[EDIFICIO, VALOR_P1, VALOR_P2, VALOR_P3
1,54,47,12
2,14,67,46
3,24,34,57];
for Contador = 2 to NoOfFields('Tabla2')
vCampo = FieldName($(Contador),'Tabla2')
vPeriodo = SubField('$(vCampo)','_',2);
Trace nombre de campo $(vPeriodo);
ValorEdificio:
load
EDIFICIO,
$(vCampo) as Valor,
'$(vPeriodo)' as PERIODO
Resident Tabla2;
next Contador
left join (Tabla1)
load
*
Resident ValorEdificio;
drop table Tabla2;
Hola a todos,
Gracias por vuestra ayuda!
Pero el problema que tengo es que en Tabla1 el campo PERIODO es solo uno, pero en Tabla2 tengo 3 campos ( VALOR_P1, VALOR_P2 y VALOR_P3 ) y ese campo se debe relacionar con esos 3.
Debería hacer una Crosstable en Tabla2 para hacer que VALOR_P1, VALOR_P2 y VALOR_P3 se conviertan en un solo campo y así poder unirlo con PERIODO de Tabla1?
Gracias.
Un saludo.
Hola Alexis:
Ufff me ha costado pero creo que lo he entendido, la CrossTable generará los datos como tú quieres
CrossTable ( ... )
LOAD ...
VALOR_P1 as P1,
VALOR_P2 as P2,
VALOR_P3 as P3
Esta es la idea, pule tú la forma
Saludos
Joaquín
Hola Alexis:
Cómo tienes este tema ?
Saludos
Joaquín
Debes utilizar una JOIN
Puedes consultar el documento adjunto.
Hola @alexis.garcia
Podrías, por favor, indicar el obejtivo final? La tabla que necesitas llegar?
Saludos.
Hola Alexis, no sé si te refieres a esto:
TABLA2:
CrossTable(PERIODO, Datos)
LOAD EDIFICIO,
VALOR_P1 as P1,
VALOR_P2 as P2,
VALOR_P3 as P3
FROM
Libro1.xls
(biff, embedded labels, table is Hoja1$);
TABLA1:
Right Join(TABLA2)
LOAD * Inline [
EDIFICIO,PERIODO,NUMERO
1,P1,24
2,P2,34
3,P3,17
];
Devuelve:
---------------------------------------------------
Supongo que no te refieres a la opción más simple:
TABLA1:
LOAD * Inline [
EDIFICIO,PERIODO,NUMERO
1,P1,24
2,P2,34
3,P3,17
];
TABLA2:
Left Join (TABLA1)
LOAD EDIFICIO,
VALOR_P1,
VALOR_P2,
VALOR_P3
FROM
Libro1.xls
(biff, embedded labels, table is Hoja1$);
Devolvería: