Access SQL Rolling 12 months Distinct Count -


i have 2 tables in ms access, 1 dates list of months , years, eg:

monthnumber yearnumber 1 2013 2 2013 3 2013

the second table bedfile lists clients namecode, date, month, , year of stay, eg:

namecode date month year bob 1/1/2013 1 2013 joe 1/1/2013 1 2013 bob 1/2/2013 1 2013 joe 1/2/2013 1 2013 eric 1/2/2013 1 2013 bob 2/15/2013 2 2013 joe 2/16/2013 2 2013 bob 2/1/2014 2 2014 joe 2/1/2014 2 2014

what i'm looking for

i'm trying make query counts distinct namecodes twelve months prior, eg:

monthresults yearresults countresults 1 2013 3 2 2013 3 2 2014 2

this rolling query, meaning results column display count of namecodes found within 12 months prior.

my first sql attempt is:

select dates.monthnumber, dates.yearnumber, ( select count(a.namecode) (select distinct bedfile.namecode bedfile bedfile.date between dateserial(dates.yearnumber-1, dates.monthnumber, datepart("d", bedfile.date)) , dateserial(dates.yearnumber, dates.monthnumber, datepart("d", bedfile.date)) ) ) dates group dates.yearnumber, dates.monthnumber

when run this, asks me dates.yearnumber , dates.monthnumer are. if input numbers (say, 2013 , 1 respectively) gives me distinct count month.

my second attempt this:

select count(a.namecode), dates.monthnumber, dates.yearnumber (select distinct bedfile.namecode, bedfile.month, bedfile.year bedfile bedfile.date between dateadd("yyyy", -1, bedfile.date) , bedfile.date ) inner join dates on (a.month=dates.monthnumber) , (a.year=dates.yearnumber) group dates.yearnumber, dates.monthnumber;

this second query gives me distinct counts, each month, rather sum of previous 12.

does know how me create i'm looking for? possible in access sql query?

select     first_date,     second_date,     count(name) num_distinct,     name from(     select          distinct b.namecode name,         b.date first_date,         dateadd("yyyy",-1,[b.date]) second_date     bedfile b     b.date between dateadd("yyyy",-1,[b.date]) , b.date ) group name 

not sure if correct since i've never used ms access sql seems work


edit:

you said query

select count(a.namecode), dates.monthnumber, dates.yearnumber     (select distinct bedfile.namecode, bedfile.month, bedfile.year     bedfile     bedfile.date     between dateadd("yyyy", -1, bedfile.date) , bedfile.date    )   inner join dates  on (a.month=dates.monthnumber) , (a.year=dates.yearnumber) group dates.yearnumber, dates.monthnumber; 

returns distinct count per month why not wrap select selects sum() of count sum per year? another thing can remove group dates.monthnumber.... because going split data month instead of showing year.

i recommend grouping year it's less sql write , easier read.


Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -