みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
いつもお世話になっています。
今回下記の様な複雑なクロス集計を行いたいのですが
どの様に行うのが宜しいでしょうか?
入力されているテーブルのフィールドは、ID、名前、記入日、担当者、性別、年代、です。
クロス集計に表示させるのは記入日、担当者、性別、年代の4つになります。
2015年5月 担当A 担当B 担当C
性別 男 女 男 女 男 女 合計
年齢 10代 5 1 2 1 0 0 9
20代 0 0 0 1 0 0 1
30代 1 0 0 0 0 0 1
40代 0 0 0 0 2 1 3
50代 0 0 0 0 0 0 0
60代 0 0 0 0 0 0 0
70代 0 0 0 0 0 0 0
80代 0 0 0 0 0 0 0
90代 0 0 0 0 0 0 0
小計 6 1 2 2 2 1 14
合計 7 4 3
集計用のテーブルには性別「男」と性別「女」を作って元テーブルとそれぞれリレーション
したらいいのでは?
Offline
こんな感じ?
http://pupld.net/28/150605/k62jo9mq6g/index.cgi
複雑な?クロス集計.fmp12
Offline
旅人さん
ばっちりです!ありがとうございます。
年代を年齢の計算フィールドからTruncate ( c_年齢 ; -1 ) & "代"で出していた為
リレーションが上手く働か無かったためルックアップで取り出したら上手く行きました^^
もうひとつお聞きしたいのですが
この集計表の他にもう一つ同じレイアウト内で
集計表を出すことは可能でしょうか?
2015年5月 担当A 担当B 担当C
東京 1 2 3
大阪 1 1 1
神戸 1 1 1
横浜 0 0 0
といった住所地の集計表を下に出したいのですが・・・
※入力テーブルは同じテーブルです。
別々のレイアウトであれば出来るのですが同じレイアウト内だと??です。
どうぞよろしくお願い致します。
元データ側に、集計用のキーデータを、¶でつないで2個持たせておけば、できますね。
ただ、項目数が異なるので、表示に工夫が必要かも。
Offline
年月を無視してますが、こんなのを使えばできるかも知れない?
http://pupld.net/28/150609/jye5kdbcat/index.cgi
複雑なクロス集計_2.fmp12
Offline
Shinさん
すみません、¶でつなぐという意味が私には
ちょっと難しいようです^^
旅人さん
またもやサンプルありがとうございます。、
これは担当と地区の組み合わせを、全組合せレイアウトにて予め手打ちしておくという認識で宜しいでしょうか?
例)都道府県等の場合48×担当者の数=144のデータを先に作る
もし上記の様な場合、該当に無い物が出た場合はどの様にすれば宜しいでしょうか?
値一覧から選ぶ様にしていて、該当の物がない場合は値一覧の編集を許可で追加しています。
可能であれば、Dレイアウト上にて該当の期間入力されている地区のみを
集計で表示出来ればと思っているのですが。。。
また、Dレイアウトで入力日を記入しており、
表示レイアウト上で月を該当月を検索できるようにしたのですが
こちらは先ほどと逆で該当の期間の年代だけを出すのではなく
すべての年代を表示出来ればと思っています。
あとから追加の要望ばかりで申し訳ありません。
どうぞよろしくお願い致します。
手打ちというか、スクリプトでもできるのですが。
予め全組合せがあれば、該当のものが無いということにはならないような。
Dテーブルで期間で検索して、対象レコードを担当&地区をユニーク制限した
全組合せテーブルからインポートしたらできそうですけど、
横浜 0 0 0
これは表示できないですよね。
Offline
大分返事が遅れ申し訳ありません。
旅人さん
横浜 0 0 0
そうです。これは表示されないですね^^
年齢の方をボディで表示するのではなく後部総計の方に表示するには
どの様にすれば宜しいのでしょうか?
上記の住所地をボディパートに配置できればと思っています。
ボディパートに配置できれば入力されたもののみが表示されると思うので
都道府県の様な47程度あるものをボディにと思っています。
最初と全く逆ですね・・・すみません。
SQLでやれば?
ExecuteSQL ("
SELECT tdfk、SUM(CASE WHEN tt='A' THEN 1 ELSE 0 END), SUM(CASE WHEN tt='B' THEN 1 ELSE 0 END), SUM(CASE WHEN tt='C' THEN 1 ELSE 0 END)
FROM table
WHERE ng=201505
GROUP BY tdfk
";"";"")
存在しない都道府県も表示するには、都道府県テーブルとの結合を使います。
私はSQL分からないので
リレーションの年台を地区に変えてみただけ。間違ってるかも。
http://pupld.net/28/150714/wnd73hp1kb/index.cgi
複雑クロス集計_3.fmp12
Offline
SQLExecuterさん
お返事ありがとうございます。
すみません、ご提供いただいたSQL文をどこに入れれば良いかも分からない状態です・・・
旅人さん
サンプルのご提供ありがとうございました。
見させていただいたのですが、年代の方には男女を分けてカウントさせて、
地区の方には男女を分けずに表示出来たらと思っております。
また、年代の方の右端には合計が表示できないかなと思っているのですが・・・
何度も申し訳ありません。。
すみませんもう一つお聞きしたいのですが、
現在データの可変(実数のみ表示)が出来るのがボディパートに表示されているデータのみだと思うのですが
もうひとつデータを増やしたい場合も併せて教えて頂けないでしょうか?
地区(入力したものによって可変)
感想(入力したものによって可変)
年齢(固定)
の様なイメージになります。
どうぞよろしくお願いします。
こんなのかな?(検証不十分)
http://pupld.net/28/150715/h6qqjcfdfu/index.cgi
複雑クロス集計_4.fmp12
感想というのは分かりませんが、地区はボディにあるので新規レコードを
作るだけですよね。
Offline
旅人さん
いつもありがとうございます。
少し時間がかかるかもしれませんが確認させて頂いた後再度連絡させて頂きます。
一番下の後部総計の小計が間違ってますね。
Offline
旅人さん
すみませんとりあえず、年齢の所は出来る様になったのですが、
時々、担当フィールドと性別M、性別Fのフィールドが空欄になり集計値が表示されないようです・・
とりあえず毎回手入力で入力すれば集計は表示されるのですが、どこか間違っているのでしょうか?
また、後部総計の小計で出して頂いているのですが
出来れば年齢の方で担当者の性別小計と合計を合わせて出せればと思っているのですが・・・
どうぞよろしくお願い致します。
間違っている自信ありサンプル
http://pupld.net/28/150716/mrb1lcyg9i/index.cgi
複雑クロス集計_5.fmp12
担当や性別M、性別Fフィールドはグローバルなので全レコード削除すると消えます。
Offline
旅人さん
年齢の小計と縦合計は出せるようになりました。ありがとうございます^^
また何点か質問させて下さい。
1.ヘッダに配置してある、横合計の10代横計は数値が表示されるのですが、
20台横計、30代横計、40代横計がすべて表示されません。
10代と20代以降で計算式が違うからというのは分かるのですが
どこを見直せば宜しいでしょうか?
また、ボディに配置している地区の結果がすべて0で表示されます。
表示レイアウトを確認すると、結果の表示が全て0になっていてカウントできていない様なのですがどこを見直せば宜しいでしょうか?
ちなみに参照しているDの自己にはカウントされています。
最後に最終的には日時で絞り込んで該当した日付だけを表にしたいと思っています。
現在Dテーブル上に入力日を入れて、表示レイアウト上でフィールドを表示し
検索で絞り込みを掛けたのですが上手く検索されないようです・・
上記の3点を教え頂けると幸いです。
どうぞよろしくお願い致します。
すみません、一度終了させた後開きなおしたら、
1.ヘッダに配置してある、横合計の10代横計は数値が表示されるのですが、
20台横計、30代横計、40代横計がすべて表示されません。
というのは表示されました。
が、検索をかけるとやはり20台横計、30代横計、40代横計がすべて表示されなくなるようです・・
>ボディに配置している地区の結果がすべて0で表示されます。
ここは単純なLookupなので、なぜそんなことになるのか分かりません。
リレーションが間違っている位?
集計レイアウトではなくリレーションによる集計なので、検索して絞っても意味無いです。
現状では常にDの全レコードを対象にした集計になります。
各リレーションに日付範囲を限定する開始日と終了日を照合するリレーションの追加が
必要です。
Offline
リレーションを再度確認したのですがよくわかりません・・・
旅人さんのサンプルでは結果フィールドは計算式なのでもちろんアイコン?が黄色なのですが
なぜか私が作ったものは緑色のアイコン表示になっています。
ちゃんと表示テーブルで計算式にてLookupとしているのですがやっぱりリレーションなのでしょうか?
旅人さん
分かりました!!!
計算式を非保存としていなかった為でした^^
あとは日付の検索の部分なのですが、もう少しお力添え頂けないでしょうか?
宜しくお願いします。
間違っている危険性大!
適当に手直しして。
http://pupld.net/28/150717/nxzh1nss6l/index.cgi
複雑クロス集計_6.fmp12
0表示やめました。
Offline
旅人さん
いつもありがとうございます。
日付検索が出来る様になったのですが、これを発展させて
ヘッダに配置してある様な年代別の表を追加したいと思うのですが
こちらは性別で分けずに表示したいと思っています。
例)紹介
A B C
あり 1 0 1
なし 0 1 0
上記の様な感じです。
そこで問題が出てきまして、年代は性別で分けていますがそれを男女合わせた数値を
出したいのです。
この場合はどの様にすれば宜しいでしょうか?
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 577.77 KiB (Peak: 614.68 KiB) ]