みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
win7
FileMakerPro12 ADV
いつも参考にさせていただいております。
LOOP処理で9万件のレコードのキーが重複しているものを集約して、
数量を表示させていたのですが、1時間ほど処理に時間がかかっていました。
データ例
CODE | SURYO
100 | 10
101 | 5
201 | 5
101 | 1
あまりにも時間がかかるので、EXECUTESQLを利用しようと思い、
以下のようなSQLを実行させてみましたが、結果が?となってしまいます。
EXECUTESQL("
SELECT SUBSTR(CODE,1,2),SUM(SURYO)
FROM TABLE_A
GROUP BY SUBSTR(CODE,1,2)
";"";"")
GROUP BYの後にSUBSTRを使用せず、CODEと記述して実行すると10分くらいで
結果が返ってきますが、それだと、CODEの頭二桁での集約にはなりません。
質問したいのは、このGROUP BYの後のSUBSTR(CODE,1,2)にあたる部分の記述を
どう書けばいいかということです。
AS 別名 も試してみましたが?しか返ってきません。
SELECT句にSUBSTRが使えるので、なにかしら方法があると思うのですが、
自分が調べた限り、答えに辿りつけませんでした。
そこはフィールドしか使えないのでは。
いずれにしても計算フィールドを作って索引を設定しておかないと、高速に集計ができません。
LOOP処理で9万件のレコードのキーが重複しているものを集約して、
数量を表示させていたのですが、1時間ほど処理に時間がかかっていました。
これだけなら小計パートを使った集計でも良いのでは?
Last edited by Moz (2016-12-16 08:08:26)
Offline
小計パートを持った集計レイアウトでしょうね。
CODEのカウントという集計フィールドを作って
CODEを「!」で検索してからCODEでソート。
Offline
みなさんご返信ありがとうございます。
EXECUTESQLにこだわりすぎていたようです。
みなさんのアドバイス通り、集計レイアウトで
簡単に、高速に結果を取得できました。
ありがとうございました。
Pages: 1
[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 504.97 KiB (Peak: 509.51 KiB) ]