列の集計
命令 | 内容説明 |
---|---|
MAX | 列の最大値 |
MIN | 列の最小値 |
AVG | 列の平均 |
SUM | 列の合計 |
COUTN | 値または行のカウント |
演算子
演算子 | 意味 |
---|---|
= | 等しい |
<> | 等しくない |
>< | 等しくない |
< | より小さい |
<= | 以下 |
> | より大きい |
>= | 以上 |
下記の記述方法はあまりオススメしませんが、時々古いプログラムを見ると使われている事があるので一応。
演算子 | 意味 |
---|---|
EQ | 等しい |
NE | 等しくない |
LT | より小さい |
LE | 以下 |
GT | より大きい |
GE | 以上 |
サンプルプログラム
行の選択(WHERE)
SELECT *
INTO TABLE itab
FROM spfli
WHERE col1 = wa1
AND col2 <> wa2
AND col3 IN seltab. // 選択テーブルの場合
内部テーブルを指定する(INTO TABLE)
SELECT *
INTO TABLE itab
FROM spfli.
既存内部テーブルに新規行を追加する(APPENDING)
SELECT *
INTO APPENDING [CORRESPONDING FIELD] TABLE itab
FROM spfli.
CORRESPONDING FIELDの使用はオススメしません。
項目などを自動で判別して格納してくれる一見便利そうな機能ですが、その分処理には時間がかかります。
項目の並び順が処理毎に変わらないない限り、取得項目と格納先項目の順番などを合わせて使用しない事をオススメします。
レコードを1件のみ取得する(SINGLE)
SELECT SINGLE *
INTO TABLE itab
FROM spfli.
他にも、「UP TO 1 ROWS」でも1件のみ取得することができます。
両者の違いについては、下記の比較表にまとめました
SINGLE | 比較内容 | UP TO 1 ROWS |
---|---|---|
最初にヒットした1件 | 取得方法 | 全レコードを確認して条件に合う最初の1件 |
高い | パフォーマンス | 低い |
少ない | バッファ使用量 | 多い |
全て含む場合に使用 | 検索条件に主キー(推奨) | 一部のみの場合に使用 |
保証されている(マスタなど) | データの存在(推奨) | 保証されていない |
(推奨)は、基本的な考え方の一例です。
テーブルの名称を静的に指定する(AS)
SELECT col1 col2
INTO table itab
FROM spfli1 AS s1
JOIN spfli2 AS s2 ON s1~col1 = s2~col2.
テーブルの動的指定
全ての列を取得する(*)
全件取得する必要がない限りは個別に項目を指定する事をオススメします。
SELECT *
INTO wa
FROM spfli.
列の最大値を取得する(MAX)
SELECT MAX(col)
INTO wa
FROM spfli.
列の最小値を取得する(MIN)
SELECT MIN(col)
INTO wa
FROM spfli.
列の平均を取得する(AVG)
SELECT AVG(col)
INTO wa
FROM spfli.
値または行のカウントを取得する(COUNT)
SELECT COUNT(*)
INTO wa
FROM spfli.