您好,我能夠提取一個格式非常簡單的 SQL 表。一列具有唯一 ID (UID),另一列具有列標題,第三列具有 UID。我有另一個表,其中某些單元格具有相同的 UID。我想將第一個表(“UID”)中的值插入到第二個新表(“New”)中。
Tabulate 是對列標題進行排序並提供行數的完美工具,但由於 UID 列同時包含字串和數字數據,因此我無法透過 tabulate 直接使用值填充表,因此我將 UID 放在用於表格工具中的值。這至少給了我一個方法來關聯什麼價值屬於哪裡。
如果 tabulate 可以直接填入實際值(不需要統計),而不需要在表之間搜尋 UID,這將是理想的。
編寫偽代碼很容易顯示需要做什麼,但 JSL 我不太幸運。有人可以幫忙嗎?

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] ]
);
);
);
感謝您的時間!
你好@StarfruitBob
也許以下內容對您有用。
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]);
)));
腳本感覺很不自然。
讓我們知道它是否適用於您的應用程序。
你好@ron_horne ,
Column (dtnew ,i)[ii] = char (dtuid:val[abc])
上面的行沒有將在 dt:New 的單元格中找到的 UUID 鏈接到在 :UID 中具有相應值的 dt:UID 行,然後使用該行號保存到 dt:New 中的相應單元格中。是否有一個簡單的命令可以找到 << Get rows where( :UID == abc ) 以外的行號? 如果是這樣,我想我可以根據您上面的回答來完成此腳本。
有沒有辦法直接在單元格的實際值中製作表格,而不管數據類型和建模,沒有統計數據?
解決了! 我沒有嘗試使用 JMP 來執行此操作,而是請某人修改 SQL 查詢來執行此操作,這要容易得多。