selezionare dove istruzione per il confronto del valore della colonnaSono tornato a JSL dopo una lunga pausa e sentendomi arrugginito.
Non riesco a selezionare dove funziona l'istruzione. Sono sicuro che è piuttosto semplice.
Sto cercando di selezionare le righe confrontando un valore con i valori in altre due colonne.
dt << select where( :Col1 > :Col2 & :Col1< :Col3);
Col1 è carattere (apposta) perché deve essere utilizzato ulteriormente e Col2, Col3 sono colonne numeriche.
Che c'è?
Ho anche provato a farlo dalla GUI ma non sembra funzionare.
Grazie
Re: selezionare dove istruzione per il confronto del valore della colonnaCiao @ENTHU ,
Come accennato da @mzwald , i confronti >, <, ecc. richiedono valori numerici con cui lavorare.
Un'idea per aggirare questo problema per il tuo :col1 (che è nominale), è usare la codifica numerica, come 0, 1, 2, 3, 4 per le diverse classi di caratteri (se puoi), quindi utilizzare la proprietà della colonna " etichette valore" per inserire i caratteri nel ruolo etichetta. In questo modo, puoi eseguire i confronti, ma allo stesso tempo quando visualizzi il grafico o visualizzi il contenuto della colonna, mostrerà invece le etichette dei valori.
L'ho testato con una semplice tabella a 3 colonne e lo stesso codice di confronto che hai scritto. La colonna 1 ha valori 0-4, la colonna 2 è Normale casuale (0) e la colonna 3 è Uniforme casuale (-1,1). In questo caso, ha selezionato la riga 6.
Spero che sia di aiuto!,
ds

Re: selezionare dove istruzione per il confronto del valore della colonnaCiao @ENTHU ,
Vedo alcune cose che dovrai affrontare. Immagino che tu stia cercando di fare riferimento a queste colonne in base alla loro occorrenza nella tabella dei dati? In tal caso, dovrai regolare la sintassi per fare il riferimento in quel modo (ad esempio :Column(#)[] ). Inoltre, se la tua prima colonna è un tipo di dati carattere, dovrai racchiudere il riferimento a quella colonna nella funzione num() per convertire le stringhe in un valore numerico per poter effettuare il confronto. Ecco un po' di codice per iniziare:
dt = current data table();
dt << select where( num(:Column(1)[]) > :Column(2)[] & num(:Column(1)[]) < :Column(3)[]);
Spero che questo aiuti!
@giuliano
Re: selezionare dove istruzione per il confronto del valore della colonnaPer i confronti , tutte le colonne devono essere numeriche.