LoginSignup
1
4

More than 5 years have passed since last update.

データベースからデータを取得する(SELECT)

Posted at

列の集計

命令 内容説明
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.

リンク

SAP公式サイト(データ読込み)

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4