Re: Ayuda con "DISTINCT ON"

From: "Zuleima Lara" <zlara(at)interactivedata(dot)com(dot)ve>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con "DISTINCT ON"
Date: 2005-12-19 16:41:42
Message-ID: 00b401c604bb$1d04ff20$2cee90c1@sky
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola....
Disculpa, me podrias indicar como podria hacer lo del ORDER BY 1?

Nota: Tuve un error al escribir el articulo. Donde menciono que la funcion me sirve con valores constantes; me falto cambiar algunos datos. Te escribo el ejemplo de nuevo. De antemano muchisimas gracias....

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 = "minorista 1") as estado,
> (SELECT capital FROM Minorista WHERE Min = "minorista 1") as capital,
> (SELECT descripcion FROM Productos WHERE prov = ''prov 1'') as descripcion,
> (SELECT precio FROM Productos WHERE prov = ''prov 1'') as precio,
>
> FROM AlmacenMnBS WHERE Min = "minorista 1" AND prov = ''prov 1'' AND fecha = ''10/25/05''
>
> ORDER BY
> (SELECT estado FROM Minorista WHERE Min = "minorista 1"),
> (SELECT descripcion FROM Productosv WHERE prov = ''prov 1''),
> fecha DESC, hora DESC;

Gracias!!!!

----- Original Message -----
From: Jaime Casanova
To: Zuleima Lara
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Monday, December 19, 2005 12:13 PM
Subject: Re: [pgsql-es-ayuda] Ayuda con "DISTINCT ON"

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

---------------------------(fin del mensaje)---------------------------
TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2005-12-19 16:41:58 Re: Saludos - Obtener los ultimos caracteres de una cadena
Previous Message Jaime Casanova 2005-12-19 16:13:20 Re: Ayuda con "DISTINCT ON"