domingo, 17 de julio de 2016

Sumar en Reporting Services solamente un valor por grupo

Cuando tenemos una consulta que devuelve varios registros por grupo donde tenemos unos datos en el grupo y no en el detalle, tenemos el problema que al mostrarlo en reporting y hacer una suma, nos lo va a sumar tantas veces como detalle tenga y no una vez por grupo.
Se puede solucionar haciendo una sub-consulta pero aquí vamos a explicar como mostrarlo en una única consulta.

Por ejemplo, tenemos la siguiente estructura:

Lo primero, es agregar una columna que cuente el número de registro dentro del grupo con la siguiente línea:
ROW_NUMBER() OVER (PARTITION BY Grupo ORDER BY Hijo ASC) as Fila

De esta manera sabemos cual es la línea dentro del grupo:
Ahora desde reporting es muy sencillo filtrar los datos solamente para la fila 1 de cada grupo.
Por ejemplo, podemos ocultar la línea de detalle primera y  mostrarla directamente en la cabecera poniéndole la siguiente expresión de visibilidad en las líneas de detalle:
Para sumar, le agregamos la condición de que solo sume la línea 1 de cada grupo. ojo, para que funcione debéis transformar los valores, bien a int, adecimal o a lo que necesite para que no de error:
=Sum(IIF(Fields!Fila.Value = 1,CDbl(Fields!Horas_Previstas.Value),CDbl(0)))


No hay comentarios:

Publicar un comentario