リレーションを利用して、対象を限定した合計値を取得する方法
2015年12月15日 07:30 PM
はじめの一歩
次のような、収益表示のレポートをを作ってみましょう。
表示する条件としては
1、過去全ての収益金額を表示させたい
2、過去2年間の収益金額も表示させたい。
3、過去2年間の収益金額で、金額の少ない順にソートしたい
1つめのご要望である「過去全ての収益金額を表示させたい」は、
集計フィールドを作成して、小計パートに配置することで解決できます。
ですが、2つめのご要望である「過去2年間の収益金額も表示させたい。」はどうでしょうか。
たとえば、表参道支店にはレコードが4つ存在しています。
過去2年分だけを集計したいので、必要なデータは2014年度、2015年度の2つのみになります。
その2つを集計すると、青字表記部分の「¥40,000」という期待する値になります。
では、どのようにこの集計を実現すれば良いのでしょうか。
・計算フィールド
・自己リレーション
この2つを利用して、実装をしていきたいと思います。
まず、必要な計算フィールドの1つめである「key_年」を作成します。
(フィールド名は任意のもので問題ありません)
■key_年 の作成
この計算フィールドを作成すると、次のような状態になります。
改行区切りでテキストを格納しています。
続いて、リレーションを設定します。
今回は、自己リレーション(つながっている2つのテーブルオカレンスの双方が、同一のテーブルを指定している状態)を利用しますが、別テーブルとのリレーションでも同じことが実現可能です)
■リレーションの作成
今回は、自己リレーション(つながっている2つのテーブルオカレンスの双方が、同一のテーブルを指定している状態)を利用しますが、別テーブルとのリレーションでも同じことが実現可能です)
元々ある収益テーブルのテーブルオカレンスをコピーし、自己リレーションを作成します。
2つ目の条件であるkey_年 = 年度 とは、年度フィールドの内容がkey_年フィールドの値と同じもの…という条件なのですが、
FileMakerのリレーションの場合、改行区切りで格納されたデータが存在する場合、複数条件を指定しているようなイメージになりますので、この場合は
「年度フィールドの値が、2014年または2015年のもの」という指定になります。
このリレーションを設定したあとで、収益テーブルに、2つ目の計算フィールドである「過去2年の収益合計」フィールドを作成します。
■過去2年の収益合計フィールドの作成
Sumは、別のテーブルオカレンスのフィールド値を集計する関数ですが、リレーションが成立しているもののみが集計対象になるため、
「店舗番号が同じで2014年または2015年の年度のもの」という指定になります。
このフィールドを作成すると、次のようなフィールドが完成します。
各レコードごとに、期待する値が取得できていることが確認できると思います。
この「過去2年の収益合計フィールド」を小計パートに配置すると、
過去全ての収益合計と、過去2年間の収益合計を同時に表示させることが可能になります。
最後にソート順を指定して完成です。
少し難しいかもしれませんが、応用のきくテクニックなのでぜひマスターしてもらえたらと思います!
※1
テーブルオカレンスの概念やリレーション図の見方については、下記のブログをご参照下さい。
□FileMaker考察:「テーブル」と「テーブルオカレンス」の違いについて
□リレーションシップグラフを読み解いてみよう