Hola,
no se si postgres permite una consultas recursivas.

La tabla contiene un grupo, que contiene cuentas con un importe que suma o resta, asu vez un grupo puede contener otro


necesito sacar los totales por grupo, por ejemplo
el grupo 02 tendria un valor de 250 , 200 del grupo 01 + las dos cuentas del 20 y 30



CREATE TABLE pruebas (
    grupo character(12) NOT NULL,
    clase character(1) NOT NULL,        (puede tener el valor C o G)
    cuenta character(12) NOT NULL,     ( Contiene una cuenta o un grupo)
    signo character(1),
    importe integer
);


grupo|clase|cuenta|signo|importe
02          |G|01          ||
03          |G|02          ||
04          |G|02          ||
05          |G|04          ||
05          |G|01          |-|
01          |C|43001       |-|100
01          |C|43002       ||300
02          |C|70000       ||20
02          |C|70001       ||30
03          |C|60000       ||600
03          |C|60001       |-|601
05          |C|2000        ||1000
04          |G|03          |-|

Gracias
--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: pruebas; Type: TABLE; Schema: public; Owner: postgres; Tablespace: 
--

CREATE TABLE pruebas (
    grupo character(12) NOT NULL,
    clase character(1) NOT NULL,
    cuenta character(12) NOT NULL,
    signo character(1),
    importe integer
);


ALTER TABLE pruebas OWNER TO postgres;

--
-- Data for Name: pruebas; Type: TABLE DATA; Schema: public; Owner: postgres
--

COPY pruebas (grupo, clase, cuenta, signo, importe) FROM stdin;
02              G       01              \N      \N
03              G       02              \N      \N
04              G       02              \N      \N
05              G       04              \N      \N
05              G       01              -       \N
01              C       43001           -       100
01              C       43002           \N      300
02              C       70000           \N      20
02              C       70001           \N      30
03              C       60000           \N      600
03              C       60001           -       601
05              C       2000            \N      1000
04              G       03              -       \N
\.


--
-- Name: pruebas_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; 
Tablespace: 
--

ALTER TABLE ONLY pruebas
    ADD CONSTRAINT pruebas_pkey PRIMARY KEY (grupo, clase, cuenta);


--
-- PostgreSQL database dump complete
--

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a