Hi.
The function works well...
I will use your function and rewrite it to accept more than one select, becouse in this case you selected all records from tb1 table. In real case the table is
bigger with many fields and I will work with some filters and some ordering
(dynamically)...
Thank you.

[EMAIL PROTECTED] wrote:
CREATE TABLE tb1 (id integer primary key, value numeric);

CREATE TYPE subtotal_type AS (id integer, value numeric, subtotal numeric);

CREATE OR REPLACE FUNCTION subtotal () RETURNS SETOF subtotal_type AS $$
DECLARE
   tbrow    RECORD;
   sbrow    subtotal_type;
BEGIN
   sbrow.subtotal := 0;
   FOR tbrow IN
     SELECT id, value FROM tb1 ORDER BY id
   LOOP
     sbrow.id := tbrow.id;
     sbrow.value := tbrow.value;
     sbrow.subtotal := sbrow.subtotal + tbrow.value;
     RETURN NEXT sbrow;
   END LOOP;
   RETURN;
END;
$$ LANGUAGE plpgsql;

insert into tb1 (id, value) values (1, 20.0);
insert into tb1 (id, value) values (2, 2.0);
insert into tb1 (id, value) values (3, 3.0);

select * from subtotal();

[EMAIL PROTECTED] wrote:
Hi.
How can I sum a row and show the sum for each row???
For example, in a finances table that have the total movimentation(debit/credit)
in the bank.

i.e:
CREATE TABLE TB1 (id integer primary key, value numeric);
insert into tb1 values (1,20);
insert into tb1 values (2,2);
insert into tb1 values (3,3);
insert into tb1 values (4,17);
insert into tb1 values (5,-0.5);
insert into tb1 values (6,3);

I want a query that returns:
-id- | --- value --- | --- subtot ---
   1 |        20.00  |         20.00
   2 |         2.00  |         22.00
   3 |         3.00  |         25.00
   4 |        17.00  |         42.00
   5 |        -0.50  |         41.50
   6 |         3.00  |         44.50

Any idea???

Thanks.


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to