Re: Ayuda con "DISTINCT ON"

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Zuleima Lara <zlara(at)interactivedata(dot)com(dot)ve>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con "DISTINCT ON"
Date: 2005-12-19 16:13:20
Message-ID: c2d9e70e0512190813l44477a16ub82f255329ea5ee6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 12/19/05, Zuleima Lara <zlara(at)interactivedata(dot)com(dot)ve> wrote:
>
> Buenos dias, tengo un problema, y me gustaria que me ayudaran. Es el
> siguiente:
>
> El distinct on acepta como expresion parametros que son pasados en la
> llamada del procedimiento?.
>
> Intento realizar una consulta donde utilizo la palabra reservada "distinct
> on" en conjunto con el "order by" y me lanza un error, es el siguiente:
>
> ERROR: SELECT DISTINCT ON expressions must match initial ORDER BY
> expressions
>
> El codigo que ejecuto es el siguiente:
>
> CREATE OR REPLACE FUNCTION p(varchar,varchar)
>
> RETURNS refcursor CALLED ON NULL INPUT LANGUAGE plpgsql AS'
>
> BEGIN
>
> SELECT distinct on
>
> (
> (SELECT estado FROM Minorista WHERE Min = $1),
> (SELECT descripcion FROM Productos WHERE prov = $2)
> )
>
> (SELECT estado FROM Minorista WHERE Min = $1) as estado,
> (SELECT capital FROM Minorista WHERE Min = $1) as capital,
> (SELECT descripcion FROM Productos WHERE prov = $2) as descripcion,
> (SELECT precio FROM Productos WHERE prov = $2) as precio,
>
> FROM AlmacenMnBS WHERE Min = $1 AND prov = $2 AND fecha = ''10/25/05''
>
> ORDER BY
> (SELECT estado FROM Minorista WHERE Min = $1),
> (SELECT descripcion FROM Productosv WHERE prov = $2),
> fecha DESC, hora DESC;
>
> END';
>
> Pero si en el procedimiento utilizo valores fijos en las sentencias del
> distinct on, no existen problemas y funciona perfectamente. La sentencia me
> hace el filtro de las filas repetidas.
>
> Ejemplo:
>
> CREATE OR REPLACE FUNCTION p(varchar,varchar)
>
> RETURNS refcursor CALLED ON NULL INPUT LANGUAGE plpgsql AS'
>
> BEGIN
>
> SELECT distinct on
>
> (
> (SELECT estado FROM Minorista WHERE Min = ''minorista 1''),
> (SELECT descripcion FROM Productos WHERE prov = ''prov 1'')
> )
>
> (SELECT estado FROM Minorista WHERE Min = $1) as estado,
> (SELECT capital FROM Minorista WHERE Min = $1) as capital,
> (SELECT descripcion FROM Productos WHERE prov = $2) as descripcion,
> (SELECT precio FROM Productos WHERE prov = $2) as precio,
>
> FROM AlmacenMnBS WHERE Min = $1 AND prov = $2 AND fecha = ''10/25/05''
>
> ORDER BY
> (SELECT estado FROM Minorista WHERE Min = $1),
> (SELECT descripcion FROM Productosv WHERE prov = $2),
> fecha DESC, hora DESC;
>
> END';
> Auxilio.......
> Gracias!!!!

prueba con ORDER BY 1, el resto de columnas

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Zuleima Lara 2005-12-19 16:41:42 Re: Ayuda con "DISTINCT ON"
Previous Message Zuleima Lara 2005-12-19 15:45:35 Ayuda con "DISTINCT ON"