2012-06-14 5 views
16

Próbuję utworzyć sumę warunkową w programie SQL Server Report Builder 3.0.Przeprowadzanie operacji podobnej do SUMIF przy użyciu programu SQL Server Report Builder

Moje wyrażenie wygląda następująco:

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

Miałem nadzieję, że to wyrażenie będzie produkować sumę kWp wszystkich projektów typu 2.

Niestety, to nie ma być. I nie mogę się domyślić, dlaczego. Po prostu zwraca wynik 0, mimo że wiem, że w kolumnie kWp są wartości niezerowe, a kolumna nie zawiera wartości null.

Kolega udało się uzyskać pozytywny wynik zastępując

Fields!kWp.Value 

z

1 * Fields!kWp.Value 

Ale nie mamy pojęcia, dlaczego to działa, a zatem nie można naprawdę zaufać odpowiedź .

Jak mogę zachować tę sumę warunkową, aby się zachowywać?

+0

Czy są jakieś wartości dziesiętne zapisane w kolumnie kWp? – praveen

+0

Tak - wszystkie są wartościami dziesiętnymi - z grubsza w zakresie 0 - 100 –

+0

Następnie należy odrzucić wartości w int SUM (iif (Fields! ProjectTypeID.Value = 2, CINT (Fields! FieldkWp.Value), 0) – praveen

Odpowiedz

22

Typ danych kolumny „kWp” jest dziesiętny więc trzeba albo przekształcić domyślną wartość 0,00 lub rzucać kolumnę podwoić

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

Aby uzyskać sum z kWp wszystkich projektów typu wyrażenie jest następujący,

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

Mam nadzieję, że u pomóc.

+0

Dziękuję za odpowiedź. Jesteś pewien, że to zsumuje tylko wartości, dla których jest to prawdą? Napisane w ten sposób wygląda tak, jakby było wykonywane najpierw - a następnie zwraca sumę wszystkich pól. –

0

Aby uzyskać sumę warunkową można spróbować to wyrażenie

To sumuje tylko liczby dodatnie, w przeciwnym razie dodaje 0 do całości, możesz zrobić to mądrej.

Powiązane problemy