最終的なテーブルを集計したいのですが、結合部分を解決する方法がわかりません。各行をプロシージャに渡すテーブルcontracts.dbfを通過するDoWhileループがあります。この手順test33は、この情報を使用して、他のテーブルから目的のデータを選択します。私が望む集計は、各ループからのすべての結果です。したがって、contracts.dbfに101行ある場合、joining.dbfの幅は101列になります。
DELETE FILES *.tmp RECYCLE
SELECT distinct depot_nr FROM bs_case;
INTO table contracts.tmp
SELECT RECNO() as rownum,;
depot_nr as depot_nr;
FROM contracts.tmp
NbContracts =RECCOUNT()
COPY TO test3.dbf
CLOSE TABLES
counter = 1
DO WHILE counter < NbContracts
SELECT depot_nr as depot_nr;
WHERE rownum = counter FROM test3
test33(depot_nr, counter)
counter = counter + 1
ENDDO
CLOSE TABLES
PROCEDURE test33(depot_nr_in, NbofTimes)
use bs_case alias bs
SELECT Depot_nr as depot_nr,;
Psres3pcgb as psres3pcgb;
WHERE Depot_nr = depot_nr_in FROM bs INTO TABLE toJoin.tmp
DO CASE
CASE NbofTimes = 1
SELECT * FROM toJoin.tmp
COPY TO joining.dbf
CASE NbofTimes = NbContracts
?counter
SELECT * FROM bsP.tmp as one LEFT JOIN joining.dbf as aggregated; && ERROR HERE
ON (one.depot_nr = aggregated.depot_nr) into table joining.dbf
CLOSE TABLES
ENDPROC
Otherwise
SELECT * FROM toJoin.tmp as one LEFT JOIN joining.dbf as aggregated; && ERROR HERE
ON (one.depot_nr = aggregated.depot_nr) into table joining.dbf
CLOSE TABLES
ENDCASE
CLOSE TABLES
CLOSE DATABASES
ENDPROC
データは次のようになります
bs_case
===================================
depot_nr Psres3pcgb
22 123
31 222
22 345
32 444
23 222
22 222
contracts.dbf
===================================
22
31
32
23
私のプロシージャは、contracts.dbfの各値をパラメータとして受け取ります。これはdowhileループで行われます。
最終結果は、test33プロシージャの各実行からのテーブルになります。例えば
Loop 1
===============
22
the result
Loop2
==============
22 31
test33(22) test33(31)
Loop3
==============
22 31 32
test33(22) test33(31) test33(32)
Loop4
==============
22 31 32 23
test33(22) test33(31) test33(32) test33(23)
test33(##)の各結果は、値の列です。これが私がやろうとしていることのより良い絵を与えることを願っています