2012-06-14 118 views
16

Estoy tratando de producir una suma condicional en SQL Server Report Builder 3.0.Llevar a cabo una operación de SUMA como el uso de SQL Server Report Builder

Mi expresión se ve así:

=Sum(Iif(Fields!ProjectTypeID.Value=2,Fields!kWp.Value,0)) 

yo esperaba que esta expresión produciría una suma de la kWp de todos los proyectos de tipo 2.

Por desgracia, no es ser. Y no puedo entender por qué. Simplemente devuelve un resultado de 0, aunque sé que hay valores distintos de cero en la columna de kWp, y la columna no contiene nulos.

Un colega hubo manera de conseguir un resultado positivo mediante la sustitución de la

Fields!kWp.Value 

con

1 * Fields!kWp.Value 

Pero no tenemos idea de por qué esto funciona, y por lo tanto, realmente no se puede confiar en la respuesta .

¿Cómo puedo obtener esta suma condicional para comportarse?

+0

¿Tiene algún valor decimal almacenado en la columna kWp? – praveen

+0

Sí, todos son valores decimales, aproximadamente en el rango 0 - 100 –

+0

Luego debe convertir los valores en int SUM (iif (Fields! ProjectTypeID.Value = 2, CINT (Fields! FieldkWp.Value), 0) – praveen

Respuesta

22

El tipo de datos de la columna 'kWp' es decimal por lo que necesita o bien convertir el valor por defecto de 0,00 o fundido de la columna para duplicar

SUM(iif(Fields!ProjectTypeID.Value = 2,cdbl(Fields!kWp.Value),0.00)) 
1

Para obtener el sum del kWp de todos los proyectos de tipo 2 , la expresión es la siguiente,

=IIf(Fields!ProjectTypeID.Value=2,sum(Fields!kWp.Value),0) 

espero que esto ayudará a u.

+0

Gracias por su respuesta. ¿Está seguro de esto? solo sumará los valores para los que esto es cierto? Escrito de esta manera, parece que el if se realizará primero, y luego devuelve la suma de todos los campos. –

0

para obtener la suma condicional puede probar esta expresión

=sum(IIf(Fields!balance.Value > 0,(Fields!balance.Value),0)) 

Suma solo números positivos, de lo contrario, agrega 0 al total, puede hacerlo sabiamente.

Cuestiones relacionadas