BEGIN TRANSACTION;
/* Create a table called TEST123*/
/* A working example in SQLLITE3*/
CREATE TABLE TEST123
(USER_ID integer,
NUM integer,
num_id integer);
/* Create few records in this table*/
INSERT INTO TEST123 VALUES(47641,800,1);
INSERT INTO TEST123 VALUES(47641,100,2);
INSERT INTO TEST123 VALUES(47641,250,3);
INSERT INTO TEST123 VALUES(70919,200,1);
INSERT INTO TEST123 VALUES(70919,200,2);
INSERT INTO TEST123 VALUES(70919,200,3);
INSERT INTO TEST123 VALUES(70919,200,4);
/* Display all the records from the table */
SELECT * FROM TEST123;
/*
SELECT a.USER_ID, a.NUM ,a.num_id , (SELECT SUM(b.NUM) FROM TEST123 AS b where b.num_id<=a.num_id and b.user_id = a.user_id)
FROM TEST123 AS a
GROUP BY a.USER_ID,a.NUM,a.num_id ORDER BY a.USER_ID,a.num_id;
*/
CREATE TEMPORARY TABLE TEMP_TABLE1 AS
SELECT a.USER_ID AS USER_ID, a.NUM AS NUM ,a.num_id AS num_id, (SELECT SUM(b.NUM) FROM TEST123 AS b where b.num_id<=a.num_id and b.user_id = a.user_id) AS CUM_NUM
FROM TEST123 AS a
GROUP BY a.USER_ID,a.NUM,a.num_id ORDER BY a.USER_ID,a.num_id;
SELECT * FROM TEMP_TABLE1;
SELECT USER_ID, NUM, num_id, CASE WHEN CUM_NUM > 1000 THEN (1000 - (CUM_NUM-NUM)) ELSE CUM_NUM END FINAL_CUM_NUM
FROM
TEMP_TABLE1;