2011-07-15 3 views
1

Un lecteur de longue date. Une grande richesse d'informations sur ce site.Expression totale n'affichant pas les données correctes dans SSRS 2008

J'espère que ce n'est pas une question stupide, mais j'ai eu du mal à obtenir les totaux corrects dans mon rapport.

Je rencontre des problèmes avec des totaux simples. J'ai un rapport qui prend la différence de deux nombres et montre le résultat, avec les résultats étant négatifs et positifs. Au bas du rapport, je veux une somme totale de la différence. Les totaux ne sont même pas proches pour une raison quelconque.

Voilà mes données:

Correct Data 

Specialist Total Sales  Budget   Difference 
DICK  "$35,174.00" "$63,530.00" "($28,356.00)" 
NATHAN  "$16,193.00" "$40,000.00" "($23,807.00)" 
PAUL  "$52,096.00" "$55,000.00"  "($2,904.00)" 
STEVE  "$31,185.44" "$66,700.00" "($35,514.56)" 

**Totals: "$134,648.44" "$225,230.00" "($90,581.56)"** 

Incorrect Data that is in my report 

Specialist Total Sales  Budget   Difference 
DICK   "$35,174.00" "$63,530.00" "($28,356.00)" 
NATHAN  "$16,193.00" "$40,000.00" "($23,807.00)" 
PAUL   "$52,096.00" "$55,000.00"  "($2,904.00)" 
STEVE  "$31,185.44" "$66,700.00" "($35,514.56)" 

**TOTALS: "$134,648.44" "$225,230.00"  "$71,118.44"** 

Comme vous pouvez le voir, les données montrent la differece totale 71,118.44 $ quand il devrait être (90,581.56 $).

Voici mon expression pour obtenir le résultat de la différence:

=Sum(Fields!TotalSales.Value)-Fields!Budget.Value 

je raison cliqué sur le champ de texte et sélectionné « Ajouter Total » pour obtenir un grand total pour le champ de différence. J'ai aussi essayé cette suggestion:

=Sum(Fields!TotalSales.Value)-Sum(Fields!Budget.Value) 

Et ceci:

=ReportItems!textbox14.Value - ReportItems!textbox15.Value 

Une autre chose à mentionner est il est Regrouper sur le spécialiste. Le champ Total des ventes est un total du groupe pour leurs ventes pour ce mois particulier. Le champ Budget est un champ unique en dehors du groupe.

Cela semble être une évidence que cela devrait fonctionner. Peut-être que quelqu'un peut me donner des conseils à ce sujet.

Merci d'avance.

EDIT:

Merci pour l'aide, mais malheureusement, le problème est plus compliqué que ça :) Je aurais dû être plus clair. Je tire des données de 3 à 4 bases de données et elles n'ont pas de champ commun à lier. Qu'est-ce que j'utilise un numéro de ligne pour réduire les sous-totaux en double et les mettre à 0. J'utilise un numéro de référence sur le numéro de budget, mais les données que je recevais était faux. Voici les données que j'ai:

Name Team SubTotal Budget 
SCOTT Vikings 202  25000.00 
SCOTT Vikings 1890  25000.00 
SCOTT Vikings 5167  25000.00 
SCOTT Vikings 20256 25000.00 
SCOTT Vikings 0  25000.00 
SCOTT Vikings 0  25000.00 

Et voici les données que je veux avoir:

Name Team SubTotal Budget 
SCOTT Vikings 202  25000.00 
SCOTT Vikings 1890   0.00 
SCOTT Vikings 5167   0.00 
SCOTT Vikings 20256  0.00 
SCOTT Vikings 0   0.00 
SCOTT Vikings 0   0.00 

Si le numéro budgétaire répète plus d'une fois, je veux que ce soit 0. Je pense que c'est le raison pour laquelle mes totaux ne s'affichent pas correctement dans SSRS. Je calcule le champ Différence en prenant le total général des sous-totaux du vendeur et en les soustrayant du champ Budget qui a été placé dans le pied de groupe (puisque je suis nouveau, je ne peux pas poster d'images, désolé, voici l'hyperlien)

http://i55.tinypic.com/124jw2u.png

Voici mon instruction SQL aussi:

WITH InvoicedAndPaid 
AS 

(
SELECT KEY1 
    ,ltrim(rtrim(CustomText01)) as CustomText01 
    ,ROW_NUMBER() OVER(PARTITION BY DocNo ORDER BY DocNo) AS RowNumber  
    ,SubTotal 
    ,OrderDate  
     ,INVOICEDATE 
FROM DocumentHeadersItems AS AA 
JOIN SorArCombined AS BB 
ON AA.DocNo = ('AA' + BB.CustomerPoNumber) 
JOIN CONTACT1 AS CC 
ON AA.SoldToCMAccountNo = CC.ACCOUNTNO 
WHERE CreatedBy != 'NOAHDM' 
    AND KEY1 IN (@org) 
    AND SubTotal != 0 
    AND LEN(INVOICE) > 0 
    AND 
    (

     (
      CUSTOMER = 'QAA' 
      AND (INVOICEDATE IS NOT NULL) 
      AND (DATEPART(MM,INVOICEDATE) = DATEPART(MM,@start)) 
      AND (DATEPART(YYYY,INVOICEDATE) = DATEPART(YYYY,@end)) 
     ) 
     OR 
     (
      CUSTOMER != 'QAA' 
      AND (YearInvBalZero > 0) 
      AND (YearInvBalZero = DATEPART(YYYY,@start)) 
      AND (MonthInvBalZero = DATEPART(MM,@start)) 
      AND (YearInvBalZero = DATEPART(YYYY,@end)) 
      AND (MonthInvBalZero = DATEPART(MM,@end))    
     ) 
    ) 
) 

SELECT bb.team_id 
    ,bb.specialist_id 
    ,dd.Budget 
    ,cc.team_name 
    ,KEY1 
    ,CustomText01 
    ,CASE WHEN RowNumber = 1 THEN SubTotal ELSE 0 END as SubTotal 
FROM InvoicedAndPaid as aa 
join SalesReporting.dbo.team_members as bb 
on rtrim(aa.CustomText01) = rtrim(bb.specialist_name) 
join SalesReporting.dbo.team_master as cc 
on bb.team_id = cc.team_id 
join SalesReporting.dbo.sales_goals as dd 
on bb.specialist_id = dd.specialist_id 
WHERE dd.time_span LIKE 'M%' 
    AND dd.month = DATENAME(MONTH,@end) 
    AND dd.Org = aa.KEY1 
    AND cc.team_name in (@team) 
    AND dd.period_no = DATEPART(MM,@end) 
ORDER BY team_name, CustomText01 

cette aide un peu? J'essaye d'éviter de faire une procédure stockée parce que je suis assez nouveau chez SSRS et SQL Server.

Répondre

1

Une option consisterait à calculer le total des ventes dans la requête SQL Server utilisée dans l'ensemble de données SSRS. L'exemple suivant montre un échantillon. L'échantillon a été créé sur la base d'une hypothèse de la façon dont j'ai envisagé la table pourrait être. Le rapport a été créé en SSRS 2008 R2 et la base de données utilisée était SQL Server 2008 R2.

  1. En supposant que la table source est comme le montre la capture d'écran # 1 . La table n'est pas normalisée mais elle est montrée ici juste pour un exemple.

  2. La requête pour la base de données de rapports serait comme indiqué dans la capture d'écran # . La requête est également donnée sous la section SSRS Dataset Query.

  3. Le rapport est conçu comme illustré dans la capture d'écran # . L'expression dans la section a serait =Fields!TotalSales.Value - Fields!Budget.Value et l'expression dans la section b serait =Sum(Fields!TotalSales.Value, "SalesData") - Sum(Fields!Budget.Value, "SalesData").

  4. Capture d'écran # affiche l'exécution du rapport.

Espérons que ça aide.

DataSet SSRS Requête:

SELECT  Specialist 
     , SUM(Sales) AS TotalSales 
     , SUM(DISTINCT(Budget)) AS Budget 
FROM  dbo.SalesData 
GROUP BY Specialist 

Screenshot # 1:

1

Screenshot # 2:

2

Screenshot # 3:

3

Screenshot # 4:

3

1

Dans ce cas rare, je devais mettre dans un pied de page et faire référence à la somme formules aux zones de texte réelles. Très bizarre que cela a fonctionné mais les expressions régulières n'ont pas fonctionné.

J'apprécie votre aide à ce sujet!