2016-03-31 1 views
0
Report Month   Booked Month   Hours  Available Hours Reported Hours 
2015-12-01 00:00:00 2015-10-01 00:00:00  3.5  97     172 
2015-12-01 00:00:00 2015-10-01 00:00:00  0.75  97     172 
2015-12-01 00:00:00 2015-10-01 00:00:00  6.85  97     172 
2015-12-01 00:00:00 2015-10-01 00:00:00  3   97     172 
2015-11-01 00:00:00 2015-10-01 00:00:00  3.5  97     185 
2015-11-01 00:00:00 2015-10-01 00:00:00  0.75  97     185 
2015-11-01 00:00:00 2015-10-01 00:00:00  6.85  97     185 
2015-11-01 00:00:00 2015-10-01 00:00:00  3   97     185 

Dans mon rapport SSRS, je souhaite totaliser la colonne Heures signalées. Cette personne a réservé 172 heures en décembre et 185 heures en novembre, donc son total pour l'année devrait être de 185 + 172 = 357.SSRS - Comment totaliser une ligne

Dans mon rapport actuel, il additionne toutes les lignes. Comment puis-je obtenir juste une rangée d'heures rapportées par mois?

Merci

Répondre

0

Il n'existe pas de méthode définie pour cela dans SSRS.

Habituellement, vous pouvez renvoyer votre requête dans une autre requête qui utilise ROW_NUMBER et groupe par mois. Puis ajouter que les heures si le row_numnber = 1.

How do I use ROW_NUMBER()?

Malheureusement ce n'est pas toujours possible. J'ai écrit du code pour additionner des enregistrements uniques basés sur un autre champ. Je l'ai fait pour obtenir des chèques pour divers fournisseurs.

Pour l'expression, vous utiliseriez:

=Code.SUMVendors(Report_Month & "|" & Fields!Reported_Hours.Value) 

Ajouter Visual Basic au CODE du rapport:

FUNCTION SUMVendors(BYVAL ITEMS AS OBJECT()) AS DECIMAL 
'Returns Sum of unique vendors. Use as Code.SUMVendors(Vendor & "|" & Amount) 
IF ITEMS IS NOTHING THEN 
    RETURN NOTHING 
    GOTO EXITSUB 
END IF 

DIM TEMP AS STRING 
DIM VENDORS AS STRING = "" 
DIM VENDOR AS STRING = "" 
DIM VALUE AS DECIMAL 

FOR EACH ITEM AS OBJECT IN ITEMS 

    TEMP = CONVERT.TOSTRING(ITEM) 

    VENDOR = "|" & LEFT(TEMP, InStr(TEMP, "|")) 

    VALUE = CDEC(MID(TEMP, InStr(TEMP, "|") + 1, LEN(TEMP))) 

    IF InStr(VENDORS, VENDOR) = 0 Then 
     VENDORS = VENDORS + VENDOR 
     SUMVendors = SUMVendors + VALUE 
    End If 

NEXT 

EXITSUB: 
END FUNCTION