Skip to main content

5-4-6 条件付き関数

関数名

機能

SUM / AVG / MIN / MAX / COUNT

SUM、AVG、MIN、MAX、COUNTのすべての各統計関数で、指定した条件に合ったデータのみを計算対象データとして計算します。

P系の関数を計算式で使用することはできません。

SUM / AVG / MIN / MAX / COUNT

機能

SUM、AVG、MIN、MAX、COUNTのすべての各統計関数で、指定した条件に合ったデータのみを計算対象データとして計算します。

書式

  • SUM(数値型フィールド名, 条件式)

    条件に合ったデータの合計値を計算します。

  • AVG(数値型フィールド名, 条件式)

    条件に合ったデータの平均値を計算します。

  • MIN(フィールド名, 条件式)

    条件に合ったデータの最小値を計算します。

  • MAX(フィールド名, 条件式)

    条件に合ったデータの最大値を計算します。

  • COUNT(フィールド名, 条件式)

    条件に合ったデータのデータ件数を計算します。

設定

  1. 「数値型フィールド名」に、計算する対象データが入ってくる数値型フィールド名を指定します。

  2. 「条件式」には、処理対応するための条件式を指定します。条件式に集計関数を使用できません。

注意

指定の条件を判断しながら集計を処理するため、条件式にはどのようなかたちでも集計関数を含めることはできません。

指定してしまった場合は、実行できない式として扱われ、フィールドの計算は行われません。その場合は、通常は入力値(データが入力されていない場合はゼロ:0)のままです。

参考

P系、R系、G系の関数についても、条件付き演算が可能です。

使用例

前提条件

次のように設計し、VrSetForm関数のモード(4または5)のレポートライターモードで実行した場合

  • XML様式ファイル

    1ページ4行の明細の帳票(繰り返し設計)で統計関数はフィールド内で設定している場合

    各フィールドは、次のように設定されているとします。

    フィールド名

    桁数、型

    キー

    改ページ

    累計値のクリア

    計算式

    KEY

    XXXX

    1

    maru.png

    NO

    RANK

    XX

    NO

    XXXX

    CODE

    99

    PRICE

    9999

    XXは文字型フィールド、99は数値型フィールドです。

    RANK

    NO

    CODE

    PRICE

    A

    1001

    1

    100

    B

    1001

    1

    200

    C

    1001

    1

    300

    B

    1001

    1

    400

    A

    1001

    1

    500

    B

    1001

    2

    600

    A

    1002

    3

    700

    C

    1002

    3

    800

    A

    1002

    3

    900

    sdCommon_i3-4-6_001.png

    繰り返しフィールドの2行目以降は、SVFX-Designerでは「R」、SVF Cloud Designerでは「X」と表示されます。

  • 例1

    数値型フィールド「Field」の値として、「RANK」がAランクのキーブレイクまでの「PRICE」の合計値を取得する場合

    SUM関数を使用します。

    • 計算式 SUM(PRICE,RANK="A")

    • 編集式 FORMAT(Field,"ZZZ,ZZ9")

  • 例2

    数値型フィールド「P_Field」の値として、「RANK」がAランクのページごとの合計値を取得する場合

    PSUM関数を使用します(計算式では使用できないため、編集式として入力します)。

    • 編集式 FORMAT(PSUM(PRICE,RANK="A"),"ZZ,ZZ9")

  • 例3

    数値型フィールド「R_Field」の値として、「RANK」がAランクのCODEのデータがブレイクするまでの累計値を取得する場合

    RSUM関数を使用します。

    • 計算式 RSUM(PRICE,RANK="A")

    • 編集式 FORMAT(R_Field,"ZZZ,ZZ9")

  • 例4

    数値型フィールド「G_Field」の値として、全データにおいて、「RANK」がAランクの合計値を取得する場合

    GSUM関数を使用します。

    • 計算式 GSUM(PRICE,RANK="A")

    • 編集式 FORMAT(G_Field,"ZZZ,ZZ9")

結果

sdCommon_i3-4-6_hyou03.png

SUMの値はレコード上で集計した結果です。レコード外で集計すると全データが対象になります。

RSUMの計算において、今回の設計例では[累計値のクリア]が指定されていないため、全レコードが累計の対象です。

制限

  • 次のような計算はできません。

    • 例1 金額の合計結果が1000以上の最大金額を取得する。

      • 編集式 FORMAT(MAX(金額,SUM(金額)>=1000),"ZZ,ZZ9")

        条件式に集計関数が指定されているため、実行できません。

    • 例2 累計金額が500以下のデータの件数を取得する。

      • 編集式 FORMAT(COUNT(得意先コード,累計金額<=500),"ZZ,ZZ9")

        条件式に指定しているフィールド「累計金額」では、集計関数により値を取得しているため、実行できません。

  • 複数キーに[累計値のクリア]が指定されている場合は、指定したキーがブレイクすると毎回値が「0」に戻されます。そのため、キーごとに保持した値を取得できません。