Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/06/2009, 10:56
cacr
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
crear Vista con parámetros opcionales

Saludos

Tengo la tabla:
Código:
CREATE TABLE sal04 (
    id serial NOT NULL,
    reg_001 character varying(2) NOT NULL,
    est_001 character varying(2) NOT NULL,
    mun_001 character varying(2) NOT NULL,
    par_001 character varying(2) NOT NULL,
    cpo_001 character varying(3) NOT NULL,
    sal04_001 character varying(4) NOT NULL,
    sal02_001 integer NOT NULL,
    sal04_003 integer,
    sal04_004 integer,
    sal04_005 integer
);

COMMENT ON TABLE sal04 IS 'Registro de Morbilidad';

COMMENT ON COLUMN sal04.reg_001 IS 'Región';

COMMENT ON COLUMN sal04.est_001 IS 'Estado';

COMMENT ON COLUMN sal04.mun_001 IS 'Municipio';

COMMENT ON COLUMN sal04.par_001 IS 'Parroquia';

COMMENT ON COLUMN sal04.cpo_001 IS 'Centro Poblado';

COMMENT ON COLUMN sal04.sal04_001 IS 'Año de levantamiento de la información';

COMMENT ON COLUMN sal04.sal02_001 IS 'Causa de morbilidad';

COMMENT ON COLUMN sal04.sal04_003 IS 'Número de varones';

COMMENT ON COLUMN sal04.sal04_004 IS 'Número de hembras';

COMMENT ON COLUMN sal04.sal04_005 IS 'Total varones y hembras';
region, estado, municipio, parroquia, centro poblado y causa, son respectivamente, otras tablas, que tienen un ID y una Descripción

Luego, quiero una vista, que me traiga la cosa más o menos así:
año, region, estado, municipio, parroquia, centrpo poblado, causa, número de varones, número de hembras, total, porcentaje
donde la forma más general, sería algo así:
Código:
SELECT sal04.sal04_001, region.reg_002, estado.est_002, municipio.mun_002, parroquia.par_002, centro_poblado.cpo_002, sal02.sal02_002, sal04.sal04_005, sal04.reg_001, sal04.est_001, sal04.mun_001, sal04.par_001, sal04.cpo_001, sal04.sal02_001, round((sal04.sal04_005 * 100)::numeric / (( SELECT sum(sal04.sal04_005) AS sum FROM sal04))::numeric(10,2), 2) AS porcentaje
   FROM sal04
   JOIN region ON sal04.reg_001::text = region.reg_001::text
   JOIN estado ON sal04.reg_001::text = estado.reg_001::text AND sal04.est_001::text = estado.est_001::text
   LEFT JOIN municipio ON sal04.reg_001::text = municipio.reg_001::text AND sal04.est_001::text = municipio.est_001::text AND sal04.mun_001::text = municipio.mun_001::text
   LEFT JOIN parroquia ON sal04.reg_001::text = parroquia.reg_001::text AND sal04.est_001::text = parroquia.est_001::text AND sal04.mun_001::text = parroquia.mun_001::text AND sal04.par_001::text = parroquia.par_001::text
   LEFT JOIN centro_poblado ON sal04.reg_001::text = centro_poblado.reg_001::text AND sal04.est_001::text = centro_poblado.est_001::text AND sal04.mun_001::text = centro_poblado.mun_001::text AND sal04.par_001::text = centro_poblado.par_001::text AND sal04.cpo_001::text = centro_poblado.cpo_001::text
   JOIN sal02 ON sal04.sal02_001 = sal02.id;
Ahora, en el caso de tener criterios, digamos, poder seleccionar el año, una región, estado, municipio... sería algo como pasarle a la consulta un WHERE al final de la consulta, pero también el mismo WHERE al cálculo del porcentaje... peeeero, es opcional que reciba esos WHERE

alguna luz?
__________________
Gracias de todas todas
-----
Linux!