ExecuteSQL関数で集計レポート作成術
Tips

ExecuteSQL関数で集計レポート作成術

2026年3月20日 admin Tips

ExecuteSQL関数で「集計レポート」を楽に作るには?

FileMakerで請求書や売上集計などのレポートを作ろうとすると、
「集計フィールドやサマリーパートがたくさん必要になってレイアウトがゴチャゴチャする」
「ちょっと集計の切り口を変えたいだけなのに、専用レイアウトを作り直すのが面倒」
と感じることはないでしょうか。

そんなときに役立つのが、ExecuteSQL関数を使った集計レポートの作成です。
一見むずかしそうに見えますが、ポイントを押さえれば、意外とシンプルに扱えます。
この記事では、難しい専門用語をできるだけ使わず、基本的な考え方と具体的な使い方を紹介します。

ExecuteSQL関数って何ができるの?

ExecuteSQL関数は、FileMakerのテーブルに対して「問いかけ(質問)」を投げて、
条件に合うデータだけを取り出したり、集計したりするための関数です。

たとえば、

  • 今月の売上合計はいくら?
  • 担当者ごとの売上を一覧にしたい
  • 商品ごとの販売数量ランキングを出したい

といった質問に対して、1つの計算式で答えを返してくれます。
従来のように、集計フィールドをたくさん作ったり、レポート用レイアウトを増やしたりしなくても、
「1フィールド+1つの計算」だけで柔軟なレポートが作れるのが大きなメリットです。

基本の書き方をシンプルに覚える

ExecuteSQL関数は、ざっくり次のような形で使います。

ExecuteSQL ( 
    "SQL文" ;
    "フィールド区切り文字" ;
    "行区切り文字" ;
    引数1 ; 引数2 ・・・
)

このうち、まずは一番大事な「SQL文」の部分だけを意識しましょう。
レポート用の集計では、次の形を覚えておくと便利です。

SELECT 集計関数(フィールド名)
FROM テーブル名
WHERE 条件

よく使う集計関数は、次の3つです。

  • SUM:合計
  • COUNT:件数
  • AVG:平均

例1:今月の売上合計を1行で出す

例として、「売上」テーブルに「売上日」「金額」というフィールドがあるとします。
このとき、「今月の売上合計」を出すシンプルな例です。

ExecuteSQL (
    "
    SELECT SUM ( ""金額"" )
    FROM ""売上""
    WHERE ""売上日"" >= ? AND ""売上日"" <= ?
    " ;
    "" ;
    "" ;
    Date ( Month ( Get ( 現在日付 ) ) ; 1 ; Year ( Get ( 現在日付 ) ) ) ;
    Date ( Month ( Get ( 現在日付 ) ) + 1 ; 0 ; Year ( Get ( 現在日付 ) ) )
)

ポイントは次のとおりです。

  • SUM ( ""金額"" )で「金額の合計」を計算
  • WHERE ""売上日"" >= ? AND ""売上日"" <= ? で「この期間だけ」という絞り込み
  • ?の部分に、下側と上側の日付を「引数」として渡す

この計算式を計算フィールドやグローバルフィールドに設定すれば、
いつでも最新の「今月の売上合計」が見ることができます。

例2:担当者別の売上一覧をレポートにする

次に、担当者ごとの売上合計を一覧にしてみます。
「担当者名」と「その人の売上合計」を並べて表示するイメージです。

SQL文は次のようになります。

SELECT ""担当者"" ; SUM ( ""金額"" )
FROM ""売上""
GROUP BY ""担当者""
ORDER BY SUM ( ""金額"" ) DESC

このSQL文をExecuteSQL関数に組み込むと、

ExecuteSQL (
    "
    SELECT ""担当者"" ; SUM ( ""金額"" )
    FROM ""売上""
    GROUP BY ""担当者""
    ORDER BY SUM ( ""金額"" ) DESC
    " ;
    "¶" ;
    "¶"
)

といった形になります(フィールド区切り文字や行区切り文字に改行を指定)。

返ってくる結果は、次のようなテキストです。

山田太郎¶150000
佐藤花子¶120000
鈴木一郎¶90000

このテキストを、ポータルや仮想リストテクニックと組み合わせれば、
「担当者別売上ランキング」のようなレポート画面が作れます。

例3:日付ごとの売上推移レポート

「日ごとに売上がどれだけあったか」を、一覧で確認したい場合もあります。
この場合は、日付でグループ分けします。

ExecuteSQL (
    "
    SELECT ""売上日"" ; SUM ( ""金額"" )
    FROM ""売上""
    WHERE ""売上日"" BETWEEN ? AND ?
    GROUP BY ""売上日""
    ORDER BY ""売上日""
    " ;
    "¶" ;
    "¶" ;
    日付範囲開始 ; 日付範囲終了
)

このような「集計+グループ化」のパターンさえ押さえれば、
日別、月別、担当者別、商品別など、さまざまな切り口でレポートを作れます。

実務で使いやすくするための工夫

ExecuteSQL関数を実務で使うときは、次のポイントを意識すると管理しやすくなります。

  • 命名ルールをそろえる
    フィールド名・テーブル名がバラバラだと、SQL文が読みにくくなります。
    「売上::売上日」「売上::金額」のように、ある程度パターン化しましょう。
  • SQL文はコメント付きで保存
    長いSQL文は、スクリプトのコメントやテキストメモに残しておくと、あとから修正しやすくなります。
  • 結果の表示方法を工夫
    そのままテキストとして表示するだけでなく、仮想リストやWebビューア、グラフオブジェクトなどと組み合わせると、
    見た目も分かりやすいレポートになります。

ExecuteSQLを使うときの注意点

便利な一方で、いくつかの注意点もあります。

  • フィールド名・テーブル名の変更に弱い
    名前を変えると、SQL文のほうも手作業で直す必要があります。
  • 入力ミスでエラーになりやすい
    カッコやスペースの抜けなど、ちょっとしたミスで結果が返ってこないことがあります。
    少しずつテストしながら作るのがおすすめです。
  • 複雑にしすぎない
    1つのSQL文で何でもやろうとすると、読みづらくなります。
    必要に応じて集計を分けたり、スクリプト側で補助したりしましょう。

まとめ:ExecuteSQLでスマートな集計レポートを

ExecuteSQL関数を使うと、

  • 集計フィールドや専用レイアウトを増やさずにレポートが作れる
  • 集計の切り口を柔軟に変えられる
  • 1つの計算式で「聞きたいこと」をそのまま表現できる

といったメリットがあります。
最初は「SELECT」「WHERE」「GROUP BY」などの基本的な形だけを覚えて、
シンプルな集計から少しずつ試してみるのがおすすめです。

日々の売上確認や、担当者別の結果チェックなど、よく見るレポートからExecuteSQL化していくと、
だんだんと運用が楽になっていきます。ぜひ、自分のファイルで一度試してみてください。

※ 本稿は、生成AIを使用して執筆しています。重要な内容については、必ずご自身でマニュアル等をご確認ください。