> -----Mensaje original-----
> De: Daniel Ferrer
> 
> Estimados:
>                 Tengo un problema (en realidad, no se como 
> parsearlo) con una subconsulta, que me devuelve un "int", 
> pero necesito convertirlo a "varchar" y como todo la tupla va 
> concatenada, no puedo generarla.(creo que ese el error) 
> porque me devuelve una cadena vacía.
>  
> El ejemplo seria:
>  
> SELECT (a.nombre ||  ' cantidad: ' || (Select sum(b.cantidad) 
> FROM tabla_b b WHERE b.id = a.id) || '.' ) AS registro FROM 
> tabla_a a WHERE a.id = 6
>  
> el resultado que espero debería ser algo así:
> "nombre cantidad: 3."
>  
> Si alguien me puede dar una mano...
>  
>  

Si ese fuese el error, la solución tuya sería castear el resultado de la
subconsulta:

SELECT (a.nombre ||  ' cantidad: ' || (Select sum(b.cantidad)::text 
FROM tabla_b b WHERE b.id = a.id) || '.' ) AS registro FROM 
tabla_a a WHERE a.id = 6

Pero ese no es el error ya que Postgres soporta la concatenación entre un
texto y un entero.

Lo más probable es que no exista el id = 6 en tabla_b.
En tal caso modifica tu consulta a la siguiente:

SELECT (a.nombre ||  ' cantidad: ' || (Select COALESCE(sum(b.cantidad), 0)
FROM tabla_b b WHERE b.id = a.id) || '.' ) AS registro FROM 
tabla_a a WHERE a.id = 6


Saludos.

--
TIP 7: no olvides aumentar la configuración del "free space map"

Responder a