1
誰かが書いたこの結果を与える理由機能以下:機能を理解しようと、それは(彼は会社左)
Create function code_status
(p_code_id varchar,
p_daytime date,
p_status varchar);
Select status into l_value from table1 where code_id=p_code_id and daytime=p_daytime;
Return l_value;
End;
、以下のSQLクエリでそれを使用する:
Select code, daytime, status, code_status(code_id, daytime, status) from table2
where code_status(code_id, daytime, status) in ('act') and daytime = '12 Jan 2017'
は私がから選択クエリを実行します
:それは次のような結果を与えるコード= 'F23'Select code, code_id, daytime, status from table1 where code = 'f23';
のためのすべての行を取得する機能私は実行すると
Code code_id status daytime
F23 123df act 16 Jul 2016
F23 123df stn 12 Jan 2017
F23 123df act 15 Mar 2017
は、それ以下のクエリは、次の結果が得られます。今
Select code, daytime, code_id,status, code_status(code_id, daytime, status) stat_funct
from table2
where code_status(code_id, daytime, status) in ('act')
and daytime = '12 Jan 2017'
and code='f23'
Code daytime code_id status stat_funct
F23 12 Jan 2017 123df act act
私は、この関数が何をするのか理解しようと、それは、クエリでどのように機能するか、「なぜstat_functですよ行為'?
異なるコードに対して複数の同じcode_idはありません。コードは1つのcode_idにのみ割り当てられます。 –
"とdaytime = '12 Jan Jan ''"のためにできますか? –
おそらくほとんどの場合、あなたはそれを呼び出す方法はほとんど効率が悪いでしょう - 基本的にはクエリのtable1とtable2を結合していますが、間接的にはその関数を介して結合しています。 'p_status'値は使用されません。両方のテーブルにデータが重複している可能性がありますが、そのいずれかのサンプルから分かりにくいです。 'stat_funct'は' table1'のステータス値です。 'table2'には何がありますか? –