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)
-   -   Concatenar salida en un query (https://www.clubdelphi.com/foros/showthread.php?t=94005)

Angel.Matilla 17-06-2019 13:00:20

Concatenar salida en un query
 
Tengo este query en FB 2.5:
Código SQL [-]
SELECT DISTINCT Apellidos, Nombre, Nif, NomCar
  FROM Ls02
 WHERE Cargo IN (2, 34) 
 ORDER BY Apellidos, Nombre, Nif
que me da, por ejemplo, esta salida:
Cita:

Apellidos1 Nombre1 Nif1 ALCALDE
Apellidos2 Nombre2 Nif2 ALCALDE
Apellidos2 Nombre2 Nif2 PRESIDENTE LOCAL
Y quisiera que la salida fuera de esta otra forma:
Cita:

Apellidos1 Nombre1 Nif1 ALCALDE
Apellidos2 Nombre2 Nif2 ALCALDE, PRESIDENTE LOCAL
porque a partir de ese query genero un informe y el usuario desearía que saliera una única línea por cada persona. Los campos son todos VARCHAR.

Casimiro Notevi 17-06-2019 13:12:25

Por probar que no quede:
Código SQL [-]
select distinct(apellidos), distinct(nombre), distinct(nif), nomcar ...
O quizás:
Código SQL [-]
select distinct(apellidos, nombre, nif), nomcar ...

Angel.Matilla 17-06-2019 13:22:33

Cita:

Empezado por Casimiro Notevi (Mensaje 532434)
Por probar que no quede:
Código SQL [-]
select distinct(apellidos), distinct(nombre), distinct(nif), nomcar ...
O quizás:
Código SQL [-]
select distinct(apellidos, nombre, nif), nomcar ...

Las dos formas me dan error al probar. La primera me dice:
Cita:

Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, column 29. DISTINCT.
y la segunda:
Cita:

Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, column 26. ,.

Casimiro Notevi 17-06-2019 13:48:18

Entonces:

Código SQL [-]
select distinct(apellidos || nombre || nif), nomcar ...

cloayza 17-06-2019 15:16:30

Podrías intentar con lo siguiente:
Código SQL [-]
SELECT DISTINCT Apellidos, Nombre, Nif, List(NomCar,', ')
FROM Ls02
WHERE Cargo IN (2, 34) 
GROUP BY Apellidos, Nombre, Nif
ORDER BY Apellidos, Nombre, Nif

Espero te ayude, Saludos cordiales

orodriguezca 17-06-2019 15:34:53

Prueba de la siguiente forma:

Código SQL [-]
SELECT Apellidos, Nombre, Nif, LIST(NomCar, ',')
  FROM Ls02
 WHERE Cargo IN (2, 34) 
 group by Apellidos, Nombre, Nif 
 ORDER BY Apellidos, Nombre, Nif

Angel.Matilla 17-06-2019 18:15:25

Cita:

Empezado por cloayza (Mensaje 532441)
·

Cita:

Empezado por orodriguezca (Mensaje 532442)
·

Código SQL [-]
SELECT Apellidos, Nombre, Nif, LIST(NomCar, ',') FROM Ls02 WHERE Cargo IN (2, 34) group by Apellidos, Nombre, NifORDER BY Apellidos, Nombre, Nif
Efectivamente: no recordaba yo el LIST. Muchas gracias a todos por vuestra ayuda.


La franja horaria es GMT +2. Ahora son las 03:45:16.

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