web-dev-qa-db-fra.com

Exécution d'une opération similaire à SUMIF à l'aide de SQL Server Report Builder

J'essaie de produire une somme conditionnelle dans SQL Server Report Builder 3.0.

Mon expression ressemble à ceci: 

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

J'espérais que cette expression produirait la somme des kWp de tous les projets de type 2. 

Malheureusement, ce n'est pas le cas. Et je n'arrive pas à comprendre pourquoi. Il renvoie simplement un résultat 0, même si je sais qu'il existe des valeurs non nulles dans la colonne kWp et que la colonne ne contient pas de valeurs NULL. 

Un collègue a réussi à obtenir un résultat positif en remplaçant le 

Fields!kWp.Value 

avec 

1 * Fields!kWp.Value

Mais nous ne savons pas pourquoi cela fonctionne, et par conséquent, nous ne pouvons pas vraiment faire confiance à la réponse. 

Comment puis-je obtenir cette somme conditionnelle pour se comporter?

17
Daniel Neal

Le type de données de la colonne 'kWp' est Décimal. Vous devez donc convertir la valeur par défaut en 0.00 ou convertir la colonne en double.

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

Pour obtenir la sum du kWp de tous les projets de type 2 , l'expression est la suivante:

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

J'espère que cela vous aidera. 

1
Venaikat

J'ai eu un problème similaire, cela a fonctionné pour moi:

=Sum(iif(Fields!date_break.Value = "0001-01-01",Fields!brkr_fee.Value, nothing))

zb

0
Zalek Bloom

Pour obtenir la somme conditionnelle, vous pouvez essayer cette expression

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

Il additionne uniquement les nombres positifs, sinon il ajoute 0 au total, vous pouvez le faire en sens inverse.

0
Ghayour Khan