PostgreSQL - Ordenar campos en otros campos

 
Vista:
sin imagen de perfil

Ordenar campos en otros campos

Publicado por Drakon125 (2 intervenciones) el 25/11/2016 02:03:31
Hola a todos, tengo una duda:

De una tablas de personas, una persona puede tener hasta 3 números de teléfonos diferentes. Realizar una consulta donde aparezca el ID, nombre de la persona, telefono 1, telefono 2, telefono 3, Total de telefonos.

Bueno, ya hice la consulta, pero me falta ordenar los telefonos y contar cuantos telefonos tiene cada persona

1
2
3
4
5
select persona_id "ID de la Persona", nombre_completo "Nombre Completo", telefono "Telefono1"
from personas_persona as pp
inner join personas_telefono as pt
on pp.id=pt.persona_id
where pt.persona_id=1050620 order by pt.id desc

ID Nombre Telefono
1050 - LIGIA MARIA - 9991"
1050 - LIGIA MARIA - 9992"

y la tabla debe quedar así

ID Nombre Telefono1 Teledono2 Telefono3 Total de Teledonos
1050 - LIGIA MARIA - 9991" 9992 2

No tengo idea de como hacer esto, alguien me puede ayudar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ordenar campos en otros campos

Publicado por martin (121 intervenciones) el 29/11/2016 13:48:04
Con un CASE WHEN y tal vez un COALESCE,para tener un mejor control tendrias que garantizar que los telefonos que no estan instanaciados sean facilmente identificables, como por ejemplo los telefonos -1 quiere decir que no hay telefono registrado o bien NULL,
Asumo que los que no estan estan NULL

SELECT
CASE WHEN telefono1 IS NULL THEN 0 ELSE 1 END +
CASE WHEN telefono2 IS NULL THEN 0 ELSE 1 END +
CASE WHEN telefono3 IS NULL THEN 0 ELSE 1 END AS total_telefonos,
etc..

O -1 según el flag que uses
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar