Transferir datos entre tablas.Hola, puedo generar una tabla SQL que tiene un formato muy simple. Una columna tiene un ID único (UID), otra columna tiene encabezados de columna y la tercera tiene un UID. Tengo otra tabla donde ciertas celdas tienen el mismo UID. Quiero conectar los valores de la primera tabla ("UID") a la segunda tabla nueva ("Nueva").
Tabular fue la herramienta perfecta para ordenar los encabezados de las columnas y darme un recuento de filas, pero debido a que la columna UID contiene datos numéricos y de cadena, no puedo completar directamente la tabla con los valores a través de tabular, así que en su lugar puse el UID. en para valores en la herramienta tabular. Esto al menos me dio una manera de correlacionar qué valor pertenece a dónde.
Si tabulate puede completar directamente los valores reales (no se necesitan estadísticas) en lugar de tener que buscar el UID entre tablas, esto sería ideal.
Escribir pseudocódigo es bastante fácil para mostrar lo que hay que hacer, pero no tengo suerte con el JSL. ¿Alguien puede ayudar?

for( i = 1, i <= N Cols( data table( "New" ) ), i++, // col-by-col
for( j = 1, j <= N rows( data table( "New" ) ), j++, // row-by-row
if( isempty( column( data table( "New" ), i)[j] ), continue(), // if cell empty, move to next row
id_val = column( data table( "New" ), i)[j] &
id_loc = data table( "UID" ) << Get rows where( :UID == id_val) &
data table( "New" ):eval( column( data table( "New" ))[j] = data table( "UID" ):UID[ id_loc[1] ]
);
);
);
¡Gracias por tu tiempo!
La personalización en masaventanasRe: Transferir datos entre tablasHola @carambolabob
tal vez lo siguiente puede funcionar para usted.
Names Default To Here( 1 );
dtnew = New Table( "new",
Add Rows( 3 ),
New Column( "Column 1", Character, "Nominal", Set Values( {"1", "4", ""} ) ),
New Column( "Column 2", Character, "Nominal", Set Values( {"", "3", ""} ) ),
New Column( "Column 3", Character, "Nominal", Set Values( {"", "5", "2"} ) )
);
dtuid = New Table( "uid",
Add Rows( 5 ),
New Column( "UID", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 4, 5] ) ),
New Column( "Val", Character, "Nominal", Set Values( {"apple", "12.3", "987", "abc", "3"} ) )
);
for (i=1, i<=ncols(dtnew), i++,
for ( ii=1, ii <=nrows (dtnew), ii++,
if ( Column (dtnew ,i)[ii] == "", continue (),
abc= num( ( (Column (dtnew ,i)[ii])));
Column (dtnew ,i)[ii] = char (dtuid:val[abc]);
)));
el guion se siente muy poco natural.
háganos saber si funciona para su aplicación.
Re: Transferir datos entre tablasHola @ron_horne ,
Column (dtnew ,i)[ii] = char (dtuid:val[abc])
La línea anterior no vincula el UUID que se encuentra en las celdas de dt:New a la fila de dt:UID que tiene el valor correspondiente en :UID y luego usa ese número de fila para guardar en la celda correspondiente en dt:New.¿Existe un comando simple que pueda encontrar un número de fila que no sea << Obtener filas donde ( :UID == abc )? Si es así, creo que puedo basarme en lo que respondió anteriormente para completar este script.
¿Hay alguna manera de tabular el lugar en los valores reales de las celdas directamente, independientemente del tipo de datos y el modelado, sin estadísticas?
Re: Transferir datos entre tablas¡Resuelto! En lugar de intentar hacer esto con JMP, solo le pedí a alguien que modificara la consulta SQL para hacer esto, que es mucho más fácil.