Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ordenar un query con LIST (https://www.clubdelphi.com/foros/showthread.php?t=94227)

Angel.Matilla 11-10-2019 11:50:03

Ordenar un query con LIST
 
Tengo este query:
Código:

SELECT DISTINCT Apellidos, LIST(NomCar)
  FROM Ls02
 GROUP BY 1
 ORDER BY 2

que me está dando esta salida:

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/lang...func-list.html

Angel.Matilla 11-10-2019 12:41:16

Cita:

Empezado por Casimiro Notevi (Mensaje 533928)
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/lang...func-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:
Código:

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í:


La franja horaria es GMT +2. Ahora son las 21:10:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi