'Sum by group in foxpro
I'm newbie in foxpro programming. i have some issue how to fill "sum value" column with value data from second column by id_doc from first column. Thankyou
From this table 1
Table1
Id_doc Value Sum_Value
AA 12 ??
AA 11 ??
AA 14 ??
BB 9 ??
BB 8 ??
CC 7 ??
CC 10 ??
CC 13 ??
To This Table Table results
I have try this
SELECT id_doc, SUM(NILAI) as Jml;
FROM table2;
GROUP BY Id_doc;
INNER JOIN Jml_nilai as Jml ;
ON Id_doc = Id_doc;
ORDER BY Id_doc ASCENDING;
But it's not running well....
Solution 1:[1]
Your current description looks as if you want this:
CREATE CURSOR table1 (id_doc Char(20), value Int, sum_value Int)
INSERT INTO table1 (id_doc, value) VALUES ('AA', 12)
INSERT INTO table1 (id_doc, value) VALUES ('AA', 11)
INSERT INTO table1 (id_doc, value) VALUES ('AA', 14)
INSERT INTO table1 (id_doc, value) VALUES ('BB', 9)
INSERT INTO table1 (id_doc, value) VALUES ('BB', 8)
INSERT INTO table1 (id_doc, value) VALUES ('BB', 7)
INSERT INTO table1 (id_doc, value) VALUES ('CC', 7)
INSERT INTO table1 (id_doc, value) VALUES ('CC', 10)
INSERT INTO table1 (id_doc, value) VALUES ('CC', 13)
SELECT id_doc, SUM(value) FROM table1 GROUP BY id_doc
Edited: This could be the "running group sums self-Join" SQL as mentioned in the currently last comment:
SELECT T1.id_doc, T1.value, T2.grpSum FROM table1 T1 ;
JOIN (SELECT id_doc, SUM(value) as grpSum FROM table1 GROUP BY id_doc) T2 ;
On T2.id_doc = T1.id_doc
Later: learned that it's rather called [groupwise-maximum]
https://stackoverflow.com/questions/tagged/groupwise-maximum
Solution 2:[2]
Thank you so much for all response. Finally it's done....
Sharing for all. This is what i did.
CLOSE all
SET SAFETY OFF
******************************************************************
USE table1.dbf
INDEX on id_doc TO a
TOTAL ON id_doc TO table1_jumlah.dbf
CLOSE ALL
*************************************************************
sele 1
* data primer (master)
use table1_jumlah.dbf
index on id_doc to i
sele 2
* data sekunder (diisi)
use table1.dbf
index on id_doc to ii
sele 1
go top
do while .not. eof()
iddocx=Id_doc
valuex=Value
sele 2
loca for id_doc=iddocx
if found()
repl ALL Sum_Value with Valuex for id_doc=iddocx
endi
sele 1
skip
loop
endd
**********************************************************
CLOSE ALL
DELETE FILE *.bak
DELETE FILE *.idx
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | John Smith |