キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
言語を選択 翻訳バーを非表示
最初に公開されたスレッドを表示

SQL クエリの結果を変数に割り当てるにはどうすればよいですか?

JaneCuthbertson
Level II

こんにちは!私は JMP/JSL スクリプトの初心者で、理解するのに苦労しています。私がやろうとしていることは非常に単純なはずだと感じていますが、期待通りに動作していないようで、Google も役に立ちません。


私がやろうとしていること: 渡したいくつかのパラメータに基づいて、SQL データベースから制御限界値を返すだけの単純なストアド プロシージャがあります。次に、その値を列の Levey Jennings 制御限界に割り当てようとしています。以下のコードは、私が作成したものです。


このコードは、希望する値を含むテーブルを出力します。

// Get limit value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
vLCL = open database(
	"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
	"cus_sp_taglimits
		@LimitType = " || LimitType || ",
		@LimitLevel = " || LimitLevel || ",
		@utagid = '" || utagID || "'"
);

次に、「vLCL」の値を使用して、それを別のテーブルの列プロパティに適用しようとしています。

// Change column property
Data Table( "testTable" ):testColumn << Set Property(
	"Control Limits",
	{Levey Jennings( LCL( vLCL ) )}
);

上記のスクリプトは、「vLCL」を数字に置き換えると正常に動作します。

私が行き詰まっていると思うのは、SQL の結果を実際の変数として使用するにはどうすればよいかということです。値を新しいテーブルに取り込むのではなく、変数に直接クエリする方法はありますか?


これに関して何かご助力いただければ幸いです。よろしくお願いします。

-ジェーン



この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

2 件の受理された解決策

受理された解決策
jthi
Super User

Re: SQL クエリの結果を変数に割り当てるにはどうすればいいですか?

vLCL が保持する結果のテーブルによって異なります。データ テーブルの添え字付けだけで十分な場合もありますが、場合によっては << get rows where と組み合わせる必要がある場合もあります。


以下は、LSL列とUSL列の最初の行から値を取得するデータテーブル添え字の非常に基本的な例です。

Names Default To Here(1);

dt = New Table("Untitled",
	Add Rows(1),
	Compress File When Saved(1),
	New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
	New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);

my_lsl = dt[1, "LSL"];
my_usl = dt[1, "USL"];

データテーブルの添え字

Re: SQL クエリの結果を変数に割り当てるにはどうすればいいですか?

ああ、ありがとう。まさにこれが私が見逃していたものなのです!

コードを次のように調整したところ、完璧に動作しました。

// Get limit value -- returns a new table with a  single value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
tblLCL = open database(
	"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
	"cus_sp_taglimits
		@LimitType = " || LimitType || ",
		@LimitLevel = " || LimitLevel || ",
		@utagid = '" || utagID || "'"
);
//assign table value to variable
vLCL = tblLCL[1,1];
// Change column property
Eval(EvalExpr(
	Data Table( "testTable" ):testColumn << Set Property(
		"Control Limits",
		{Levey Jennings( LCL( Expr(vLCL) ) )}
	);
));

ありがとう、ありがとう、ありがとう!

-ジェーン

4件の返信4
jthi
Super User

Re: SQL クエリの結果を変数に割り当てるにはどうすればいいですか?

vLCLに探しているものがある場合は、それを評価する必要があります。列プロパティを使用してこれを行う方法の1つのオプションを次に示します。

Eval(EvalExpr(
	Data Table("testTable"):testColumn << Set Property(
		"Control Limits",
		{Levey Jennings(LCL(Expr(vLCL)))}
	);	
));

vLCLに何が保存されているかわからない場合は、たとえば以下を追加できます。

show(vLCL);

クエリの後に、探しているものがあるかどうかを確認します

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Re: SQL クエリの結果を変数に割り当てるにはどうすればいいですか?

ご返信ありがとうございます。共有いただいた内容に合わせて編集してみましたが、「表示」を実行すると次のようになります。

vLCL = DataTable("SQL 結果 799");

つまり、問題は、クエリの結果を数値として vLCL に実際に割り当てていないことだと思います。これを修正する方法をご存知ですか?


再度、感謝します!!

ジェーン

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

jthi
Super User

Re: SQL クエリの結果を変数に割り当てるにはどうすればいいですか?

vLCL が保持する結果のテーブルによって異なります。データ テーブルの添え字付けだけで十分な場合もありますが、場合によっては << get rows where と組み合わせる必要がある場合もあります。


以下は、LSL列とUSL列の最初の行から値を取得するデータテーブル添え字の非常に基本的な例です。

Names Default To Here(1);

dt = New Table("Untitled",
	Add Rows(1),
	Compress File When Saved(1),
	New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
	New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);

my_lsl = dt[1, "LSL"];
my_usl = dt[1, "USL"];

データテーブルの添え字

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

Re: SQL クエリの結果を変数に割り当てるにはどうすればいいですか?

ああ、ありがとう。まさにこれが私が見逃していたものなのです!

コードを次のように調整したところ、完璧に動作しました。

// Get limit value -- returns a new table with a  single value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
tblLCL = open database(
	"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
	"cus_sp_taglimits
		@LimitType = " || LimitType || ",
		@LimitLevel = " || LimitLevel || ",
		@utagid = '" || utagID || "'"
);
//assign table value to variable
vLCL = tblLCL[1,1];
// Change column property
Eval(EvalExpr(
	Data Table( "testTable" ):testColumn << Set Property(
		"Control Limits",
		{Levey Jennings( LCL( Expr(vLCL) ) )}
	);
));

ありがとう、ありがとう、ありがとう!

-ジェーン

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。