Hallo,
Ich habe zwei Tabellen wie unten.
Tabelle 1 :
| Name | Abschnitt | Thema |
| Adam | A | Mathematik |
| Bob | A | Wissenschaft |
| Chris | B | Englisch |
Tabelle 2:
| Name | Abschnitt | Punktzahl |
| Adam | A | 80 |
| Bob | A | 90 |
| Chris | B | 84 |
Ich möchte beide Tabellen in jsl verbinden und die folgende Ausgabetabelle erhalten, aber ich möchte nicht explizit übereinstimmende Spaltennamen angeben. Übereinstimmende Spalten wären die Spalten mit demselben Spaltennamen in beiden Tabellen. Passende Spalten können variieren. Es können 2 (wie im gezeigten Beispiel) oder 3 oder mehr sein, aber die übereinstimmende Spalte hätte denselben Spaltennamen.
Ausgang:
| Name | Abschnitt | Thema | Punktzahl |
| Adam | A | Mathematik | 80 |
| Bob | A | Wissenschaft | 90 |
| Chris | B | Englisch | 84 |
Danke 
Das sollte es tun:
DT1 = New Table("DT1",
<< Add Rows(3),
<< New Column("Name", character, Values({"Adam","Bob","Chris"})),
<< New Column("Section", character, Values({"A","A","B"})),
<< New Column("Subject", character, Values({"Math","Science","English"}))
);
DT2 = New Table("DT2",
<< Add Rows(3),
<< New Column("Name", character, Values({"Adam","Bob","Chris"})),
<< New Column("Section", character, Values({"A","A","B"})),
<< New Column("Score", numeric,continous, Values({80,90,84}))
);
LSTcols1 = DT1 << Get Column Names(string);
LSTcols2 = DT2 << Get Column Names(string);
STRjoinCols = "";
For(LVC=1,LVC<=N Items(LSTcols1),LVC++,
STRcol = LSTcols1[LVC];
If(
Contains(LSTCols2,STRcol)
,
If(
STRjoinCols == ""
,
STRjoinCols = ":"||STRcol||"==:"||STRcol
,
STRjoinCols = STRjoinCols||", :"||STRcol||"==:"||STRcol
);
);
);
expr = Eval Insert(
"\[
DT3 = DT1 << Join(
With( DT2 ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( ^STRjoinCols^ ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 0 ),
Output Table( "DT3" )
);
]\"
);
Eval( Parse( expr ) );