none
Agrupar campos repetidos. RRS feed

  • Pregunta

  • Que tal buenas tardes, estoy tratando de hacer la siguiente consulta:

    select op.Requirement_Id, op.Secuence,w.Operation as station, cp.Platform ,op.Description, cm.Model+'+'+cast((SELECT COUNT(*) FROM CarModels WHERE CarPlatform_Id= op.CarPlatform_Id)as varchar)as registros
    from OperationRequirements as op
    join WorkStations as w  on op.WorkStation_Id = w.WorkStation_Id
    join CarPlatform as cp on op.CarPlatform_Id = cp.CarPlatform_Id
    join CarModels as cm on cp.CarPlatform_Id = cm.CarPlatform_Id
    join Zone as z on w.ZoneId = z.ZoneId
    join Line as l on z.LineId = l.LineId
    where w.Operation='4110' and op.Secuence=1
    group by cp.Platform,op.Requirement_Id, op.Secuence,w.Operation,op.Description, cm.Model,op.CarPlatform_Id
    order by cp.Platform

    Lo que busco es por ejemplo en la columna de Platform traiga los registros sin repetir.
    ejemplo:
    3584-----1-------4110-----Billy Goat-----EscanearVIN------Z19VDR99K+4
    Trate de hacerlo con distinct pero no consegui lo que buscaba. Podrían orientarme ?

    El resultado de la consulta:

                                      platform

    3584---- 1---- 4110--- Billy Goat--- EscanearVIN--- Z19VDR99AK+4
    3584-----1---- 4110--- Billy Goat--- EscanearVIN--- Z19VDR99BK+4
    3584---- 1---- 4110--- Billy Goat--- EscanearVIN--- Z20NAR99AZ+4
    3584---- 1---- 4110--- Billy Goat--- EscanearVIN--- Z20NAR99BZ+4

    • Editado Eduardo HR viernes, 15 de noviembre de 2019 20:29
    viernes, 15 de noviembre de 2019 20:24

Respuestas

  • Que tal buenos días, muchísimas gracias por la ayuda el resultado de la consulta es el que buscaba. Había leído sobre las tablas derivadas pero no sabia como implementarlas, de nuevo muchas gracias. 

    martes, 19 de noviembre de 2019 16:05

Todas las respuestas

  • Hola Eduardo HR:

    La solución más fácil, es integrar tu consulta en una tabla derivada y agrupar en la salida.

    SELECT  D.Requirement_Id,
    		D.Secuence,
    		D.station,
    		D.Platform,
    		D.Description,
    		min(d.REGISTROS) AS Registros
     FROM (
    SELECT op.Requirement_Id
         , op.Secuence
         , w.Operation AS station
         , cp.Platform
         , op.Description
         , cm.Model + '+' + CAST(
    (
        SELECT COUNT(*)
        FROM CarModels
               WHERE CarPlatform_Id = op.CarPlatform_Id
    ) AS VARCHAR) AS registros
    FROM OperationRequirements AS op
         JOIN WorkStations AS w ON op.WorkStation_Id = w.WorkStation_Id
         JOIN CarPlatform AS cp ON op.CarPlatform_Id = cp.CarPlatform_Id
         JOIN CarModels AS cm ON cp.CarPlatform_Id = cm.CarPlatform_Id
         JOIN Zone AS z ON w.ZoneId = z.ZoneId
         JOIN Line AS l ON z.LineId = l.LineId
           WHERE w.Operation = '4110'
                 AND op.Secuence = 1
           GROUP BY cp.Platform
                  , op.Requirement_Id
                  , op.Secuence
                  , w.Operation
                  , op.Description
                  , cm.Model
                  , op.CarPlatform_Id
    ) AS D
    GROUP BY D.Requirement_Id,
    		D.Secuence,
    		D.station,
    		D.Platform,
    		D.Description
           ORDER BY Platform;

    Tablas derivadas.

    https://javifer2.wordpress.com/2019/11/06/tabla-derivada/

    Group by

    https://javifer2.wordpress.com/2019/10/04/group-by-quizas-la-clausula-mas-conflictiva/

    viernes, 15 de noviembre de 2019 21:16
  • Deleted
    sábado, 16 de noviembre de 2019 17:32
  • Que tal buenos días, muchísimas gracias por la ayuda el resultado de la consulta es el que buscaba. Había leído sobre las tablas derivadas pero no sabia como implementarlas, de nuevo muchas gracias. 

    martes, 19 de noviembre de 2019 16:05
  • Que tal buenos días, no es que se conviertan los datos sino lo que buscaba era contar cuantos modelos tiene cada plataforma pero al momento de mostrar la información solo se viera el primer modelo mas el número total de modelos que contiene esa plataforma.
    martes, 19 de noviembre de 2019 16:08
  • De nada Eduardo 
    martes, 19 de noviembre de 2019 17:19
  • Deleted
    martes, 19 de noviembre de 2019 19:30