VISTAS - Condición variable - Ejemplo

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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