テーブル日付範囲指定の集計方法

レコード内に

・日付

・金額

の項目のテーブルを設置しており、

日付フィールドに入力されている○/○/○〜○/○/○の期間内の金額合計を計算フィールドで表示したいのですが、

これは実現可能でしょうか?

山下さん、こんにちは。プロジェクト・アスノートの松田です。

SUM関数の中で、IF関数が使えないので、直接計算フィールドで計算はできません。

工夫するとしたら、

テーブルの各行に、IF関数を用いて対象となる日付期間の小計を出すフィールドを設置し

(期間内なら金額、期間外なら0)

その小計フィールドを計算フィールドでSUM関数で集計する、という方法であれば可能だと思います。

 

 

松田様

早急のご回答ありがとうございます。

当方、素人なもので申し訳ございません。

>テーブルの各行に、IF関数を用いて対象となる日付期間の小計を出すフィールドを設置し

>(期間内なら金額、期間外なら0)

小計フィールドに入れる計算式(IF関数)はどのように記述したら良いでしょうか?

テーブルに2つの計算フィールドの追加が必要です。

例)

計算フィールド1(フィールドコード:計算1)

計算式: DATE_FORMAT(日付, “YYYYMMdd”, “Asia/Tokyo”)

やっていること: 日付を数値に変換しています。

計算フィールド2(フィールドコード:小計)

計算式: IF(AND(YYYYMMDD >= 20200501, YYYYMMDD <= 20200531), 数値, 0)

やっていること、数値の大小比較で日付範囲を判定し、OKなら数値を、範囲外なら0

 

範囲を指定する日付を可変にしたい場合は、数値のところを

別に日付フィールド2つ、それぞれを数値に変換するための計算フィールドを設置し、

そのフィールドコードに置き換えてください。

この小計フィールドをテーブル外のSUM関数で集計

 

という感じでしょうか。

関数については、ヘルプで勉強してください。

松田様

丁寧なご回答ありがとうございます。

やってみたのですが、

計算フィールド2(フィールドコード:小計)

計算式: IF(AND(YYYYMMDD >= 20200501, YYYYMMDD <= 20200531), 数値, 0)

この部分を設定したところ「計算式に含まれるフィールドコードが存在しない、または形式が正しくありません。」のエラーが出てしまいます。

このまま計算式に入れてもダメなのでしょうか?

また、この計算式ですと、合計で出したい「金額」部分の数値はどのフィールドに表示されるのでしょうか?

松田様

度々申し訳ございません。

IF(AND(計算1>=20200501, 計算1<=20200531), 金額, 0)

上記の計算式に修正したところ小計に金額が反映しました!

お手数おかけしてすみませんでした。

ありがとうございました!