Ver Mensaje Individual
  #4  
Antiguo 29-11-2021
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
hola a todos!!

Sin dar muchos mas detalles de la relación existente entre los datos nombre/tipo y suponiendo que el campo tipo solo pude tener dos valores distintos (A, B), una solución para obtener los datos que marcas en el ejemplo puede ser esta:

Código SQL [-]
SELECT d1.nombre,
       t1.id,
       t1.tipo,
       t1.estado,
       t2.id,
       t2.tipo,
       t2.estado
  FROM (                                                                    --
        -- agrupa por nombre los distintos id de estado
        SELECT NOMBRE, MIN(UID) AS m1, MAX(UID) AS m2
          FROM (                                                            --
                -- seleciona el ultimo id de cada grupo de nombre, estado
                SELECT NOMBRE, MAX(ID) AS UID
                  FROM TABLA_A
                GROUP BY NOMBRE, TIPO) d0
        GROUP BY nombre) d1
       LEFT JOIN tabla_a t1 ON t1.id = m1
       LEFT JOIN tabla_a t2 ON t2.id = m2

Si el campo TIPO puede variar entre mas de dos valores distintos, entonces esta solución ya no es correcta.


Este hilo esta en el foro de MS-SQL. Si realmente estas utilizando MSSQL como motor de BBDD puede utilizar también la opción PIVOT, que permite agrupar múltiples registros en varias columnas de un único registro
Responder Con Cita