최종 테이블을 집계하고 조인 파트를 해결하는 방법을 알고 싶습니다. 프로 시저에 각 행을 전달하는 내 테이블 contracts.dbf를 통과하는 Do While 루프가 있습니다. 이 프로시 저는이 정보를 사용하고 다른 테이블에서 원하는 데이터를 선택합니다. 원하는 모든 집계는 각 루프의 모든 결과입니다. 따라서 contracts.dbf에 101 개의 행이있는 경우 joining.dbf는 101 열입니다. 내 절차는 파라미터로서 contracts.dbf 각 값을 얻어 FoxPro 9.0 집계가있는 테이블 조인
bs_case
===================================
depot_nr Psres3pcgb
22 123
31 222
22 345
32 444
23 222
22 222
contracts.dbf
===================================
22
31
32
23
같이
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
데이터 보인다. 이것은 do while 루프로 수행됩니다.
최종 결과를 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)
각 테스트 결과 (##)는 값의 열입니다. 이게 내가하고 싶은 일에 대한 더 나은 그림을 보여주기를 바랍니다.
프로 시저에서 수행하려는 작업은 매우 비생산적입니다. 어떤 종류의 교차 표를 원하지만 매우 비효율적 인 것처럼 보입니다. 데이터의 일부 샘플을 제공해 주시겠습니까? 원본 데이터의 3 또는 4 "Depot_NR"항목을 말하십시오. 그런 다음 제시 할 결과가 무엇인지 보여주십시오. 그것은 당신을 도와 줄 훨씬 더 좋은 기회를 줄 것입니다. – DRapp