PDA

Ver la Versión Completa : Ordenar un query con LIST


Angel.Matilla
11-10-2019, 11:50:03
Tengo este query:
SELECT DISTINCT Apellidos, LIST(NomCar)
FROM Ls02
GROUP BY 1
ORDER BY 2
que me está dando esta salida:
https://i.ibb.co/W3bWP8Z/Salida.jpg
Tal cual es el query debería ordenarlo por la columna del LIST pero no lo hace. ¿Cómo tendría que montar el query para que se orden por esa columna? He de decir que Ls02 es una vista y no sé si eso puede influir en el tratamiento de la salida.

Casimiro Notevi
11-10-2019, 12:21:50
Habrá que crear un "invento" para ordenarlo, ya que en la web dice que:
The ordering of the list values is undefined.
https://firebirdsql.org/refdocs/langrefupd21-aggrfunc-list.html

Angel.Matilla
11-10-2019, 12:41:16
Habrá que crear un "invento" para ordenarlo, ya que en la web dice que:
The ordering of the list values is undefined.
https://firebirdsql.org/refdocs/langrefupd21-aggrfunc-list.html
Gracias por la respuesta. Viendo el enlace que indicas lo que deduzco es que lo que no está definido es el orden DENTRO de la lista pero lo que necesito es que el query se ordene por esa salida no que se ordene el campo en sí.

Angel.Matilla
11-10-2019, 13:18:47
Encontré la solución. Como en la lista puede haber más de un resultado lo que necesito es buscar ese primer resultado para que se ordene y luego hacer un CAST sobre las salida:
SELECT DISTINCT Apellidos, CAST(SUBSTRING(LIST(NomCar) FROM 1 FOR POSITION(',', LIST(NomCar)||',') - 1) AS VARCHAR(30))
FROM Ls02
GROUP BY 1
ORDER BY 2, 1
y queda así:
https://i.ibb.co/MpLQzkk/Salida.jpg