リレーションを利用して、対象を限定した合計値を取得する方法

2015年12月15日 07:30 PM

はじめの一歩


次のような、収益表示のレポートをを作ってみましょう。

1512151

表示する条件としては

 

1、過去全ての収益金額を表示させたい

2、過去2年間の収益金額も表示させたい。

3、過去2年間の収益金額で、金額の少ない順にソートしたい

 

 

 

1つめのご要望である「過去全ての収益金額を表示させたい」は、

集計フィールドを作成して、小計パートに配置することで解決できます。

 

ですが、2つめのご要望である「過去2年間の収益金額も表示させたい。」はどうでしょうか。

 

たとえば、表参道支店にはレコードが4つ存在しています。

過去2年分だけを集計したいので、必要なデータは2014年度、2015年度の2つのみになります。

その2つを集計すると、青字表記部分の「¥40,000」という期待する値になります。

 

では、どのようにこの集計を実現すれば良いのでしょうか。

 

・計算フィールド

・自己リレーション

 

この2つを利用して、実装をしていきたいと思います。

まず、必要な計算フィールドの1つめである「key_年」を作成します。

(フィールド名は任意のもので問題ありません)

 

■key_年 の作成

1512152

この計算フィールドを作成すると、次のような状態になります。

1512153

改行区切りでテキストを格納しています。

続いて、リレーションを設定します。

今回は、自己リレーション(つながっている2つのテーブルオカレンスの双方が、同一のテーブルを指定している状態)を利用しますが、別テーブルとのリレーションでも同じことが実現可能です)

 

■リレーションの作成

 

今回は、自己リレーション(つながっている2つのテーブルオカレンスの双方が、同一のテーブルを指定している状態)を利用しますが、別テーブルとのリレーションでも同じことが実現可能です)

1512154

1512155

元々ある収益テーブルのテーブルオカレンスをコピーし、自己リレーションを作成します。

2つ目の条件であるkey_年 = 年度 とは、年度フィールドの内容がkey_年フィールドの値と同じもの…という条件なのですが、

FileMakerのリレーションの場合、改行区切りで格納されたデータが存在する場合、複数条件を指定しているようなイメージになりますので、この場合は

「年度フィールドの値が、2014年または2015年のもの」という指定になります。

 

このリレーションを設定したあとで、収益テーブルに、2つ目の計算フィールドである「過去2年の収益合計」フィールドを作成します。

 

■過去2年の収益合計フィールドの作成

1512156

Sumは、別のテーブルオカレンスのフィールド値を集計する関数ですが、リレーションが成立しているもののみが集計対象になるため、

店舗番号が同じで2014年または2015年の年度のもの」という指定になります。

このフィールドを作成すると、次のようなフィールドが完成します。

1512157

各レコードごとに、期待する値が取得できていることが確認できると思います。

この「過去2年の収益合計フィールド」を小計パートに配置すると、

過去全ての収益合計と、過去2年間の収益合計を同時に表示させることが可能になります。

 

最後にソート順を指定して完成です。

1512158

少し難しいかもしれませんが、応用のきくテクニックなのでぜひマスターしてもらえたらと思います!

 

※1

テーブルオカレンスの概念やリレーション図の見方については、下記のブログをご参照下さい。

 

□FileMaker考察:「テーブル」と「テーブルオカレンス」の違いについて

//ywc.com/filemaker/?p=2703

 

□リレーションシップグラフを読み解いてみよう

//ywc.com/filemaker/?p=2502