Avatar billede lovbjerg Nybegynder
03. april 2006 - 12:46 Der er 1 kommentar

select datetime hvor ikke oprette datoer også behandles

Hej

Jeg har en applikation der skal vise en sammentælling på dato. Det dog ikke alle datoer der er er oprettet i databasen hen over en Eks. 14 dags periode.
Derfor har jeg forsøgt at få min Select til at skrive de datoer der ikke findes, og sætte værdien til 0.
Det er det nemmeste med hensyn til min applikaiton.

Denne sql virker nogenlunde, men alle resultaterne kommer ud i hver sin select. Jeg har forsøgt at samle dem med en UNUON, men det vil ikke rigtig virke. Kan i hjælpe.?

declare @data datetime, @count int, @nr int
set @count = '0'
declare authors_cursor CURSOR FOR
SELECT count(*),AlarmDateTime from AlarmTable where AlarmDateTime between '03/10/2006 00:00' and '03/31/2006 23:59:59'
    group by AlarmDateTime ORDER BY AlarmDateTime DESC
OPEN authors_cursor
-- Perform the first fetch.
FETCH NEXT FROM authors_cursor into @nr, @data
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.

WHILE @@FETCH_STATUS <>-1
BEGIN

  -- This is executed as long as the previous fetch succeeds.
    while @data < dateadd(day,@count,getdate())
    BEGIN
    select dateadd(day,@count,getdate()) as 'date', 0 as 'antal'
    set @count = @count - 1
        if @count = -24
        BEGIN
        break
        END
    END
    select @data as 'date',@nr as 'antal'
    set @count = @count - 1
  FETCH NEXT FROM authors_cursor into @nr, @data
Avatar billede trer Nybegynder
09. april 2006 - 22:27 #1
Du kan lave en temporær tabel og indsæt din select i den, lav så et slut udtræk fra den temporære tabel.

insert into #temp
select dateadd(day,@count,getdate()) as 'date', 0 as 'antal'

Men cursor-operationer er ikke særlig effektive - lav i stedet en tabel med de ønskede datoer og join mod den. Du bruger lidt mere plads (ca. 8 bytes pr dag) men får en væsenligt hurtigere forespørgsel.
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