前述のように、SELECTを使用せずにテーブルからデータを取得する方法はありません。データベースサーバーは合計を計算できるため、クライアントのすべての値を取得する必要はありません。あなたがSELECTを実行しなければならない場合は、SELECTを実行するかどうかを指定することができます。欲しいです。 技術的に言えば(アプリケーションの観点から)、あなたは 'SELECT .... ....'ステートメントを実行していません。あなたは 'EXECUTE PROCEDURE give_me_what_i_want()'を実行しており、SELECTはサーバーで行われます。例えば
:あなたはあなたではない上司に伝えることができます
> create procedure get_salaries(vdept char(20)) returning int;
> return (select sum(salary) from test where dept matches vdept);
> end procedure;
Routine created.
> execute procedure get_salaries('IT');
(expression)
7800
1 row(s) retrieved.
> execute procedure get_salaries('Operation');
(expression)
4000
1 row(s) retrieved.
> execute procedure get_salaries('Marketing');
(expression)
7400
1 row(s) retrieved.
> execute procedure get_salaries('*');
(expression)
19200
1 row(s) retrieved.
>
:あなたのような何かができる
> select dept,sum(salary) from test group by dept;
dept (sum)
Operation 4000
IT 7800
Marketing 7400
3 row(s) retrieved.
>
:
D:\infx\ids12>dbaccess stores7 -
Database selected.
> create table test (emp char(20),dept char(20), salary int);
Table created.
> insert into test values ('emp1','IT',3800);
1 row(s) inserted.
> insert into test values ('emp2','IT',4000);
1 row(s) inserted.
> insert into test values ('emp3','Marketing',3900);
1 row(s) inserted.
> insert into test values ('emp4','Marketing',3500);
1 row(s) inserted.
> insert into test values ('emp5','Operation',4000);
1 row(s) inserted.
>
が、これはあなたが後にしているものですと仮定すると、 SELECTを実行し、SPLを実行するだけで、SPLは魔法によって合計値を計算します;)
SQLデータベースには通常内部順序がないため、データの順序は整っていません。そして、いいえ、情報を抽出するためのクエリが必要です。 –
ありがとうございます。それは私の初めてのことです。 select文を使用しない可能性はありますか? –
この正確な書式設定が必要ですか?その情報だけが必要な場合は、 'GROUP BY'集約を行うのは簡単でしょう。 –