From: | sergio carrasco <a882sacl(at)yahoo(dot)com(dot)ar> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | VISTAS - Condición variable - Ejemplo |
Date: | 2007-08-10 20:57:59 |
Message-ID: | 752322.64351.qm@web36804.mail.mud.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
> > ¿ Existe forma de variar esta condición al momento
> de
> > hacer un SELECT sobre la VISTA ?
> >
>Puedes crear una visat general y aplicar las
>condiciones al ejecutar la
>vista:
>
>SELECT mi_vista WHERE mi_campo=mi_valor;
ROBERTO: Muchas gracias pero, "mi_campo" está anidado
dentro de la supuesta VISTA. Se podría dejar la
condición afuera para "tomarla" al final desde el
SELECT que llama a la VISTA (como tú gentilmente
sugieres) mas la VISTA generaría un resultado muy
voluminoso-demoroso esperando que el SELECT final lo
filtre por fecha y, no es lo que deseo. La consulta
directa toma como 400 ms.
> Ejemplitoooooooooooo asi vemos que es lo que quieres
ARTURO: ¡OK! , aquí va ;******************************
(*)RECUERDA que la idea es pasar una fecha de inicio y
otra de término, para cada uno de los subselects.
-- Lista07B : CONVENIOS Comercial
SELECT vts.descripcion as descripcion,
sum(vts.pacientes) as tot_pacientes,
sum(vts.prestaciones) as tot_prestaciones,
sum(vts.valor) as tot_valor
FROM
(
-- # PRESTACIONES + $ D03
SELECT m09_cnombre as descripcion,
0::integer as pacientes,
count(d03_ingreso_prestaciones.ctid) as
prestaciones,
sum(d03_nvalor) as valor,
d04_nconvenio as grupo,
d04_nsucursal as sucursal
FROM
m09_convenios, d03_ingreso_prestaciones LEFT JOIN
d04_ingreso_pacientes ON (d03_nfolio_ing_pac_sk =
d04_nfolio_ing_pac_pk)
WHERE d04_dfecha_hora_atencion::date BETWEEN
'2007-08-01' AND '2007-08-07' AND
d03_lactivo AND d04_lactivo AND
d03_cestado = 'C' AND d04_cestado IN ('C','M') AND
m09_nconvenio_pk = d04_nconvenio
GROUP BY descripcion,grupo,sucursal
UNION
-- # PRESTACIONES + $ D05
SELECT m09_cnombre as descripcion,
0::integer as pacientes,
count(d05_pago_garantias.ctid) as prestaciones,
sum(d05_nvalor) as valor,
d04_nconvenio as grupo,
d05_nsucursal as sucursal
FROM m09_convenios, d05_pago_garantias LEFT JOIN
d04_ingreso_pacientes ON (d05_nfolio_ing_pac_sk =
d04_nfolio_ing_pac_pk)
WHERE d05_dfecha_recuperada BETWEEN '2007-08-1' AND
'2007-08-07' AND
m09_nconvenio_pk = d04_nconvenio
GROUP BY descripcion,grupo,sucursal
UNION
-- # PACIENTES d04
SELECT m09_cnombre as descripcion,
count(d04_ingreso_pacientes.ctid) as pacientes,
0::integer as prestaciones,
0::integer as valor,
d04_nconvenio as grupo,
d04_nsucursal as sucursal
FROM m09_convenios, d04_ingreso_pacientes
WHERE d04_dfecha_hora_atencion::date BETWEEN
'2007-08-01' AND '2007-08-07' AND
d04_lactivo AND d04_cestado IN ('C','M') AND
m09_nconvenio_pk = d04_nconvenio
GROUP BY
descripcion,grupo,sucursal
UNION
-- # PACIENTES d05
SELECT m09_cnombre as descripcion,
count(*) as pacientes,
0::integer as prestaciones,
0::integer as valor,
rg.d04_nconvenio as grupo,
rg.d05_nsucursal as sucursal
FROM m09_convenios,
(
SELECT
d05_nfolio_ing_pac_sk,d04_nconvenio,d05_nsucursal
FROM d05_pago_garantias LEFT JOIN
d04_ingreso_pacientes ON (d05_nfolio_ing_pac_sk =
d04_nfolio_ing_pac_pk)
WHERE d05_dfecha_recuperada BETWEEN '2007-08-01' AND
'2007-08-07'
GROUP BY
d05_nfolio_ing_pac_sk,d04_nconvenio,d05_nsucursal
ORDER BY d05_nfolio_ing_pac_sk
) as rg
WHERE m09_nconvenio_pk = rg.d04_nconvenio
GROUP BY
descripcion,grupo,sucursal
) as vts
WHERE vts.sucursal IN (1,2,4)
GROUP BY vts.descripcion,vts.grupo
ORDER BY vts.grupo
**********************************************
¡ Gracias nuevamente por CUALQUIER idea !
Sergio A. Carrasco L.
____________________________________________________________________________________
¡Sé un mejor fotógrafo!
Perfeccioná tu técnica y encontrá las mejores fotos.
http://ar.yahoo.com/promos/mejorfotografo.html
From | Date | Subject | |
---|---|---|---|
Next Message | Javier Chávez B. | 2007-08-10 21:35:43 | Re: Recomendaciones sobre el uso de vistas.] |
Previous Message | Arturo Munive | 2007-08-10 20:09:02 | Re: VISTAS - Usar condición variable |