Creo que entiendo la duda de Daniel, el quiere que por cada tupla del resultado se llame una única vez a una función y a ese resultado poder usarlo en mas de una proyección de columna y por ejemplo en el where y en este caso con lo que indica Jairo no lo solucionaría.(* tampoco lo puede resolver con lo que indica Anthony*)
El lun., 31 ago. 2020 a las 12:05, Jairo Graterón (<jgrate...@gmail.com>) escribió: > Hola Daniel, puedes retornar dos valores como dice Anthony o usar > subconsultas > > with T1 as > (select <https://www.postgresql.org/docs/11/static/sql-select.html> > 'XXXZMMM1234567890123yyyy/mm/dd' as ls_numero) > > select <https://www.postgresql.org/docs/11/static/sql-select.html> substr > <https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero, > 8, 13), substr > <https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero, > 21, 10) from t1; > > > with T1 as > (select <https://www.postgresql.org/docs/11/static/sql-select.html> > f_articulo_get_precio(xxxxx) as ls_numero) > > select <https://www.postgresql.org/docs/11/static/sql-select.html> substr > <https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero, > 8, 13), substr > <https://www.postgresql.org/docs/11/static/functions-string.html>(ls_numero, > 21, 10) from t1; > > El jue., 27 ago. 2020 a las 20:57, Anthony Sotolongo (< > asotolo...@gmail.com>) escribió: > >> Hola Daniel, si tienes acceso a modificar esa función puedes definir dos >> parámetros de salida que retornen esos valores, y así la llamarías una sola >> vez. >> >> >> Saludos >> >> El jue., 27 de agosto de 2020 7:55 p. m., Fontana Daniel C (Desartec >> S.R.L.) <desartec...@gmail.com> escribió: >> >>> perfecto, ahora imaginemos que '1234567890' es una funcion >>> f_articulo_get_precio( id_code ), >>> que devuelve en un string como el siguiente >>> 'XXXZMMM1234567890123yyyy/mm/dd' donde >>> 1234567890123 es el precio >>> yyyyy/mm/dd la fecha en que se cambio por ultima vez. >>> Como haria en este caso para obtener estos valores por separado? >>> sin llamar a la funcion 2 veces evitando sobrecargar la base? >>> >>> De: Juan José Santamaría Flecha [mailto:juanjo.santama...@gmail.com] >>> Enviado el: jueves, 27 de agosto de 2020 17:22 >>> Para: Diego >>> CC: Fontana Daniel C (Desartec S.R.L.); >>> pgsql-es-ayuda@lists.postgresql.org >>> Asunto: Re: Duda con un select >>> >>> >>> El jue., 27 ago. 2020 17:55, Diego <mrstephenam...@gmail.com> escribió: >>> El que falla es el ls_numero del substr asi te va a funcionar: select >>> '1234567890' as ls_numero, substr('1234567890', 3, 3); >>> Hay muchas formas de hacer algo equivalente, si necesitas hacer >>> referencia a la columna "ls_numero" puedes utilizar una consulta anidada: >>> >>> select substr(ls_numero, 3, 3) from >>> (select '1234567890' as ls_numero) as ls; >>> >>> Un saludo, >>> >>> Juan José Santamaría Flecha >>> >>> >>> >>>