SQL where フィルターのユーザー入力を作成するにはどうすればよいですか?そこで、ODBC を使用して SNOWFLAKE に接続し、いくつかのスクリプトを実行します。 ユーザーが使いやすくするために、WHERE フィルターのリストを含む UI ウィンドウをセットアップするにはどうすればよいでしょうか。
ポップアップを含むリストを変数にマップして SQL スクリプトにフィードすることを想定しています。可能?

//**SNOWFLAKE QUERY****************************************************************************************************
uid = Get Environment Variable( "USERNAME" );
sql_state="
/********************************/
SELECT distinct
column1
,column2
,etc
from Database
WHERE 1=1
and filter1 like '%qwerty%'
and filter2 in ('a', 'b', 'c')
--and filter3 = '54168'
--and filter4 <> 'that_thing'
--and filter5 not in ('group1','group2')
and Date >= CURRENT_DATE - 30 /*go back 30 days*/
";
snowflake_spc = Open Database( "DSN=SNOWFLAKE1;UID=account;PWD=password;", sql_state );
/****************************************************************************************************/
データアクセスRe: SQL where フィルターのユーザー入力を作成するにはどうすればよいですか?これは次のコマンドを使用すると簡単に実行できますSQLクエリビルダー。
フィルタには、実行時にプロンプトを表示するフィルタのオプションがあり、JMP がプロンプトを表示します。 独自のダイアログを作成する必要はありません。

詳細を読んで、例を見てみましょうSQLクエリを構築する。
Re: SQL where フィルターのユーザー入力を作成するにはどうすればよいですか?これは間違いなく可能です。 jsl を使用したコーディング スキルと、システムがどれだけ複雑になるかによって大きく異なります (単純な where 句を使用した where フィルタリングだけであれば、非常に簡単に実行できる可能性があります)。
考慮すべきことがいくつかあります:
- テンプレート文字列を使用してから、Eval Insert を使用してそこに値を追加します (または単に文字列を連結します)。
- like/= をどのように処理したいですか? 表示ボックス (ラジオ ボックス、チェック ボックス、コンボ ボックス)、またはテキスト編集ボックス内のテキストの解析方法を示す特定の文字を表示しますか?
- 複数の同様の条件 (フィルター 1 が何か、またはフィルター 2 が何か) を処理するにはどうすればよいですか?
- そうでない場合はどう対処すればよいでしょうか?
- モーダル ウィンドウを使用すると、スクリプト フローを簡単に処理できます。
- 後でシステムをどのように拡張するかを考える
- スクリプト ガイドとスクリプト インデックスは非常に役立ちます。 また、JMP ヘルプはさまざまな表示ボックスに役立ちます。
以下は、テンプレート文字列を使用し、その後 eval insert を使用して最終 SQL を構築する非常に簡単な例です。
Names Default To Here(1);
sqlTemplate = "\[
select *
from *
where 1=1
^filter1Str^
^filter2Str^
]\";
filter1Str = "";
filter2Str = "";
rbSel = {"like", "in", "=", "not in", "not like"};
ex = New Window("Dialog() example",
<<MODAL></MODAL>
私は非常によく似たシステムを 1 つ構築しました。このシステムは、ユーザー入力とユーザー インターフェイスでの選択に応じて完全な SQL クエリを構築します (拡張が難しくなったので、現在、時間があるときに完全に書き直しています)。