none
Sumas Agrupadas

    Pregunta

  • Hola, debe ser algo comun, pero no pude una query q me sume agrupadamente, es por esto que recurro a uds, tengo la siguiente consulta:

    SELECT     SUM(historico.totalhaberesconaportes) AS [Totalizacion de Remuneraciones], 

                          centro_responsabilidad.nombreresponsabilidad AS [Centro de Responsablidad], unidad.nombreunidad AS Unidades

    FROM         historico INNER JOIN

    unidad ON historico.codunidad = unidad.idunidad INNER JOIN

                 centro_responsabilidad ON historico.codcenresponsabilidad = centro_responsabilidad.codcenresponsabilidad

    group by unidad.idunidad

     Y me arroja el siguiente error:

    Msg 8120, Level 16, State 1, Line 6

    Column 'centro_responsabilidad.nombreresponsabilidad' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


    Lo que intento hacer es lo siguiente:
    Sumar Todos los "totalhaberesconaportes" de la tabla Historico y que me los muestre separados por Unidad,
    Varias unidades estan en un Centro de Responsabilidad. Pero necesito totalizar por Unidad.

    Alguien me puede ayudar? muchas gracias y atento a sus comentarios

     

    sábado, 21 de agosto de 2010 7:52

Respuestas

  • Hola.

    Tienes que añadir todos los campos del select en una función de agrupado (como sum, avg, count) o en el group by. En tu caso, la select sería así:

    SELECT 
     SUM(historico.totalhaberesconaportes) AS [Totalizacion de Remuneraciones],
     centro_responsabilidad.nombreresponsabilidad AS [Centro de Responsablidad], 
     unidad.nombreunidad AS Unidades
    FROM
     historico INNER JOIN
     unidad ON historico.codunidad = unidad.idunidad INNER JOIN
     centro_responsabilidad ON historico.codcenresponsabilidad = centro_responsabilidad.codcenresponsabilidad
    group by 
     centro_responsabilidad.nombreresponsabilidad, unidad.nombreunidad
    


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    sábado, 21 de agosto de 2010 7:58
    Moderador

Todas las respuestas

  • Hola.

    Tienes que añadir todos los campos del select en una función de agrupado (como sum, avg, count) o en el group by. En tu caso, la select sería así:

    SELECT 
     SUM(historico.totalhaberesconaportes) AS [Totalizacion de Remuneraciones],
     centro_responsabilidad.nombreresponsabilidad AS [Centro de Responsablidad], 
     unidad.nombreunidad AS Unidades
    FROM
     historico INNER JOIN
     unidad ON historico.codunidad = unidad.idunidad INNER JOIN
     centro_responsabilidad ON historico.codcenresponsabilidad = centro_responsabilidad.codcenresponsabilidad
    group by 
     centro_responsabilidad.nombreresponsabilidad, unidad.nombreunidad
    


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    sábado, 21 de agosto de 2010 7:58
    Moderador
  • Muchisimas Gracias !!!
    sábado, 21 de agosto de 2010 8:01