2010-10-13 4 views
0

Comment sommer les valeurs dans un groupe * (SSRS 2005). *Comment additionner des valeurs dupliquées dans un groupe (SSRS 2005)

par ex. Ma requête renvoie des valeurs comme les suivantes:

CusID Discount Amount 
1  20  1000 
1  20  2000 
1   5  700 
2  15  1500 
2  15  3000 

Mais, quand je montant forfaitaire Remise en pied de groupe, je ne peux pas obtenir les valeurs totales comme ci-dessous. Je reçois 45 pour CusID 1 au lieu de 25. S'il vous plaît aidez-moi à résoudre ce problème.Merci.

CusID Discount Amount 
1  20  1000 
1  20  2000 
1   5  700 
------------------------ 
Total 25  3700 

2  15  1500 
2  15  3000 
------------------------ 
Total 15  4500 
+1

Certes, la réduction pour CusID 1 devrait être 17 (réduction moyenne pondérée selon le montant), et non 25? –

+0

Il existe une logique métier qui doit probablement être gérée avec une fonction personnalisée dans la section .Code du rapport ou dans le SQL. Quelle est la logique pour déterminer la réduction? –

+0

Serait-il juste de supposer que la réduction est un rabais de% et non un rabais de $? – Craig

Répondre

0

Bien que sans vos données réelles, je ne peux vous fournir qu'un exemple de code basé sur les données que vous avez fournies.

declare @table table (CustID int, Discount int, Amount int) 


    insert into @table (CustID,Discount,Amount) 
    select 1 as CusID,20 as Discount,1000 as Amount 
    union all 
    select 1,20,2000 
    union all 
    select 1,5,700 
    union all 
    select 2,15,1500 
    union all 
    select 2,15,3000 

    select 
     CustID, 
     sum(Discount) as Discount, 
     sum(Amount) as Amount 
    from 
    (
     select 
      CustID, 
      Discount, 
      SUM(Amount) as Amount 
     from @table 
     group by CustID, Discount 
    ) a 
    group by CustID 
0

une légère simplification à la réponse de DForcek42 en utilisant la somme (x distincte)

declare @table table (CustID int, Discount int, Amount int) 

insert into @table (CustID,Discount,Amount) 
select 1 as CusID,20 as Discount,1000 as Amount 
union all 
select 1,20,2000 
union all 
select 1,5,700 
union all 
select 2,15,1500 
union all 
select 2,15,3000 

select 
    CustID, 
    sum(distinct Discount), 
    SUM(Amount) as Amount 
from @table 
group by CustID 
Questions connexes