none
Sumar maestro detalle sql server RRS feed

  • Pregunta

  • Buenas tardes los molesto con una ayuda sobre este error tengo este consulta para sumar los datos

    SELECT        TipoEquipo.NombreTipoEquipo, SUM(CAST(DATEPART(HOUR, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) + CAST(DATEPART(MINUTE, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) / 60) AS Hora
    FROM            CabeceraLanzEquipos INNER JOIN
                             DetalleLanzamientoHoras ON CabeceraLanzEquipos.IdCabeceraLanzEquipos = DetalleLanzamientoHoras.IdCabeceraLanzEquipos INNER JOIN
                             Equipos ON CabeceraLanzEquipos.CodigoEquipo = Equipos.IdEquipo INNER JOIN
                             TipoEquipo ON Equipos.IdTipoEquipo = TipoEquipo.IdTipoEquipo
    						 --where (select MONTH(CabeceraLanzEquipos.FechaParte) from CabeceraLanzEquipos) =  10
    GROUP BY TipoEquipo.NombreTipoEquipo


    me devuelve estos datos

    pero intento agregarle para que me muestre por ejemplo de un solo mes descomento la linea comentada anteriormente 

    SELECT        TipoEquipo.NombreTipoEquipo, SUM(CAST(DATEPART(HOUR, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) + CAST(DATEPART(MINUTE, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) / 60) AS Hora
    FROM            CabeceraLanzEquipos INNER JOIN
                             DetalleLanzamientoHoras ON CabeceraLanzEquipos.IdCabeceraLanzEquipos = DetalleLanzamientoHoras.IdCabeceraLanzEquipos INNER JOIN
                             Equipos ON CabeceraLanzEquipos.CodigoEquipo = Equipos.IdEquipo INNER JOIN
                             TipoEquipo ON Equipos.IdTipoEquipo = TipoEquipo.IdTipoEquipo
    						 where (select MONTH(CabeceraLanzEquipos.FechaParte) from CabeceraLanzEquipos) =  10
    GROUP BY TipoEquipo.NombreTipoEquipo

    lo ejecuto y me sale el siguiente mensaje : Mens. 512, Nivel 16, Estado 1, Línea 1
    La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.

    por favor ayudenme les agradezco de antemano

    Roberto

    martes, 19 de febrero de 2019 15:55

Respuestas

  • Roberto,

    El error se debe a lo explicado por Javier.  Deberas cambiar el codigo por:

    SELECT       
        TipoEquipo.NombreTipoEquipo,
        SUM(CAST(DATEPART(HOUR, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) + CAST(DATEPART(MINUTE, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) / 60) AS Hora
    FROM           
        CabeceraLanzEquipos
       
        INNER JOIN
        DetalleLanzamientoHoras
        ON CabeceraLanzEquipos.IdCabeceraLanzEquipos = DetalleLanzamientoHoras.IdCabeceraLanzEquipos
       
        INNER JOIN
        Equipos
        ON CabeceraLanzEquipos.CodigoEquipo = Equipos.IdEquipo

        INNER JOIN
        TipoEquipo ON Equipos.IdTipoEquipo = TipoEquipo.IdTipoEquipo
    WHERE
        MONTH(CabeceraLanzEquipos.FechaParte) =  10
    GROUP BY
        TipoEquipo.NombreTipoEquipo;


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    martes, 19 de febrero de 2019 16:32

Todas las respuestas

  • Hola,

    El error significa que la query:

    select MONTH(CabeceraLanzEquipos.FechaParte) from CabeceraLanzEquipos

    devuelve mas de un registro. 

    Tu consulta no puede comparar contra muchos registros, únicamente con uno solo.

    Un saludo.

    Diego

    martes, 19 de febrero de 2019 16:21
  • Hola amigo, aca esta el error  ==>  (select MONTH(CabeceraLanzEquipos.FechaParte) from CabeceraLanzEquipos) . Te devuelve mas de un registro, para eso debe hacer primero uba suma.. 

    Mira el ejemplo de abajo.

    SELECT        TipoEquipo.NombreTipoEquipo, SUM(CAST(DATEPART(HOUR, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) + CAST(DATEPART(MINUTE, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) / 60) AS Hora
    FROM            CabeceraLanzEquipos INNER JOIN
                             DetalleLanzamientoHoras ON CabeceraLanzEquipos.IdCabeceraLanzEquipos = DetalleLanzamientoHoras.IdCabeceraLanzEquipos INNER JOIN
                             Equipos ON CabeceraLanzEquipos.CodigoEquipo = Equipos.IdEquipo INNER JOIN
                             TipoEquipo ON Equipos.IdTipoEquipo = TipoEquipo.IdTipoEquipo  join (select MONTH(CabeceraLanzEquipos.FechaParte) as TotalMes,IdCabeceraLanzEquipos  from CabeceraLanzEquipos group by IdCabeceraLanzEquipos  )  cal on cal.IdCabeceraLanzEquipos   = CabeceraLanzEquipos.IdCabeceraLanzEquipos   
    						 where cal.TotalMes=  10
    GROUP BY TipoEquipo.NombreTipoEquipo

    https://social.msdn.microsoft.com/Forums/es-ES/022c9765-eedb-4897-a019-e41ecd3671df/sumar-el-campo-quottotalquot-agrupado-por-rfccodconcepto?forum=sqlserveres#6b3ff8eb-42ab-4486-8b37-8652c08eaf69

    Bader Molinas 

    Paraguay



    martes, 19 de febrero de 2019 16:28
  • Si efectivamente eso dice en el mensaje, les pregunto como lo puedo implementar, he intentado usar distinct pero la verdad no se como implementar para que primero me devuelva registros únicos y luego me haga la consulta.

    gracias

    Roberto

    martes, 19 de febrero de 2019 16:29
  • Roberto,

    El error se debe a lo explicado por Javier.  Deberas cambiar el codigo por:

    SELECT       
        TipoEquipo.NombreTipoEquipo,
        SUM(CAST(DATEPART(HOUR, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) + CAST(DATEPART(MINUTE, DetalleLanzamientoHoras.HoraT) AS decimal(18, 2)) / 60) AS Hora
    FROM           
        CabeceraLanzEquipos
       
        INNER JOIN
        DetalleLanzamientoHoras
        ON CabeceraLanzEquipos.IdCabeceraLanzEquipos = DetalleLanzamientoHoras.IdCabeceraLanzEquipos
       
        INNER JOIN
        Equipos
        ON CabeceraLanzEquipos.CodigoEquipo = Equipos.IdEquipo

        INNER JOIN
        TipoEquipo ON Equipos.IdTipoEquipo = TipoEquipo.IdTipoEquipo
    WHERE
        MONTH(CabeceraLanzEquipos.FechaParte) =  10
    GROUP BY
        TipoEquipo.NombreTipoEquipo;


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    martes, 19 de febrero de 2019 16:32
  • Que grande son todos muchas gracias. me sirvió de mucho y muy pronta la respuesta.

    marco como respuesta.

    Gracias

    Roberto

    martes, 19 de febrero de 2019 18:56