2014-07-22 5 views
1

Était en train de comprendre comment implémenter des calculs YTD dans Access 2010 à l'aide de requête SQL. tableau actuel:MS Access - Calcul YTD Rolling requête Sql

Property date_rec(mm/dd/yyyy) Revenue month1 year1 

    A 01/01/2013   100  01 2013 
    A 02/01/2013   50  02 2013 
    B 01/01/2014   200  01 2014 
    B 02/01/2014   300  02 2014 

sortie souhaitée:

Property date_rec Revenue YTD_revenue 
    A   01/01/2013 100  100 
    A   02/01/2013 50  150 
    B   01/01/2014 200  200 
    B   02/01/2014 300  500 

Nous avons essayé la requête ci-dessous, mais MS Access jette l'erreur: « vous avez essayé d'exécuter une requête qui ne comprend pas le mois1 d'expression spécifiée comme partie d'une fonction d'agrégation »

select test.property, test.date_rec, (select sum(test.revenue) 
           from test a 
           where a.month1<=b.month1 AND a.year1=b.year1) 
as revenue_ytd into new_table 
from test b 
where a.date_rec=b.date_rec 
group by property, date_rec order by property, date_rec; 

quelqu'un peut-il s'il vous plaît nous aider à déboguer le code ou nous dire si nous faisons quelque chose de mal? :)

Répondre

0

Vous êtes proche. Vous avez juste besoin d'inclure l'année et le mois dans la clause group by:

select b.property, b.date_rec, 
     (select sum(a.revenue) 
     from test as a 
     where a.month1 <= b.month1 AND a.year1 = b.year1 and 
       a.property = b.property 
     ) as revenue_ytd 
into new_table 
from test as b 
group by property, date_rec, month1, year1 
order by property, date_rec; 
+0

Hey Gordon. Merci pour la réponse. Mais il montre toujours la même erreur avec les changements suggérés – user3111273

+0

@ user3111273. . . Je viens de régler un tas d'autres problèmes que je n'ai pas remarqué la première fois. Peut-être que cela aidera - ou au moins générer une autre erreur. –

+0

Une question: Pourquoi avez-vous ajouté a.date_rec = b.date_rec dans la sous-requête? – user3111273