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 ;)
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" |