Avatar billede svesen Nybegynder
04. april 2011 - 16:19 Der er 3 kommentarer og
1 løsning

markering hvis medlem i periode

Jeg har en tabel med medlemsnummer samt start-(indmeldelses) og slut-(udmeldelses) dato..

Hvis jeg nu gerne vil lave statistik, som kan overføres til SSRS,  over hvor mange der er medlemmer hvert enkelt uge (lad os sige to år tilbage) hvordan løser jeg så nemmest dette?..

jeg har forsøgt mig med en CASE struktur, men syntes den bliver for uoverskuelig hvis jeg skal lave (52*2) 104 cases..

SELECT m.userMemberNumber,
      m.startdate,
      m.endDate,
      CASE
        WHEN m.startDate <= Getdate()
              AND m.endDate > Getdate() THEN '1'
        ELSE ' '
      END AS i_dag,
      CASE
        WHEN m.startDate <= ( Getdate() - 7 )
              AND m.endDate > ( Getdate() - 7 ) THEN '1'
        ELSE ' '
      END AS sidste_uge
.........
FROM  Membership m;
Avatar billede ulrikm Nybegynder
05. april 2011 - 00:21 #1
Her et bud på en, måske ikke optimal, men nemt forståelig løsning (synes jeg selv) med en hjælpetabel der indeholder startdatoer på ugerne. Derefter checkes der på medlemskaber der enten krydser start eller slut på en uge samt medlemskaber der ligger indenfor ugen:

declare @firstdate datetime
select @firstdate = '2011-01-04'

declare @weekstartdates table (weekStartDate datetime)
while @firstdate <= getdate()
begin
    insert into @weekstartdates values( @firstDate)
    select @firstdate = dateadd(dd,7,@firstdate)
end

select * from @weekstartdates

select weekStartDate, count(*)
    from @Membership m
        join @weekstartdates w
            on -- medlemskab krydser ugestart:
                (m.startdate < w.weekStartDate and m.endDate >= w.weekstartdate)
                -- medlemskab ligger inden for ugen
                or (m.startdate >= w.weekstartdate and m.endDate < dateadd(dd,7,w.weekstartdate))
                -- medlemskab krydser ugeslut
                or (m.startdate < dateadd(dd,7,w.weekstartdate) and m.endDate >= dateadd(dd,7,w.weekstartdate))
group by weekStartDate
Avatar billede svesen Nybegynder
06. april 2011 - 11:12 #2
Lækkert, det var lige det jeg skulle bruge... mange tak :)
Avatar billede svesen Nybegynder
06. april 2011 - 11:14 #3
Det er min første post på dette forum.

Hvordan giver jeg point for dit svar?
Avatar billede ulrikm Nybegynder
06. april 2011 - 11:19 #4
Jeg lægger et svar (denne post) som du accepterer - super at det kunne bruges til noget.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester