テーブルのデータを店舗ごとにスッキリ集計する方法
kintoneのテーブル(子レコード)に入力された情報を、特定の項目(店舗など)ごとにグループ化して、住所をまとめたり、氏名を重複なく連結したりしたいことはありませんか?
「rex0220 計算式プラグイン」の TLTABLE 関数 を使うと、複雑な集計も一つの式でスマートに実現できます。
実現したいこと
「従業員情報」テーブルから、以下の条件で集計を行い、別のテーブル(店舗別集計)に結果をセットします。
- 配属店舗 ごとにグループ化する
- 対応する 店舗住所 を取得する
- 所属する 氏名 を、重複を除いて(ユニークな状態で)カンマ区切りで連結する
アプリの構成
あらかじめ、計算結果を格納するためのテーブルを準備しておきます。
| フィールド名 | フィールドコード | 項目タイプ |
|---|---|---|
| 従業員情報(元テーブル) | 従業員情報 |
テーブル |
| 店舗別集計(先テーブル) | 店舗別集計 |
テーブル |
| 配属店舗(結果用) | 配属店舗A |
文字列(1行) |
| 店舗住所(結果用) | 店舗住所A |
文字列(1行) |
| 氏名(結果用) | 氏名A |
文字列(1行) |
計算式の設定
集計先の「店舗別集計」テーブル自体に、以下の計算式を設定します。
// 店舗別集計 SUBTABLE
// 配属店舗ごとに集計し、住所を取得、氏名を重複なしで連結する
TLTABLE(
従業員情報,
TPFILTER(AND(氏名, 配属店舗)), // 氏名と配属店舗が入力されている行のみ対象
TPKEY(配属店舗, 店舗住所), // グループ化のキー(配属店舗と住所)
TPVAL(氏名, "uniq"), // 集計する値(氏名を重複排除して連結)
TPOUT(配属店舗A, 店舗住所A, 氏名A) // 出力先のフィールド指定
)
ポイント解説
- TPFILTER: 集計対象を絞り込みます。未入力行を除外することで、綺麗な集計結果が得られます。
- TPKEY: ここに指定した項目が「同じもの」としてまとめられます。
- TPVAL: 第2パラメータに
"uniq"を指定することで、同じ名前が複数あっても一つにまとめて連結してくれます。 - TPOUT: 集計した結果を、どのフィールドに出力するかを順番に指定します。
Qiita記事
