knifflige Abfrage

Werbung:
Werbung:
Sry ich habs verpennt, Urlaub und Arbeit und so :)

Habe mich aber denooch damit befasst und meine Idee umgehend verworfen. m Internet habe ich mich für meinen Ansatz bedient und eine Funktion gefunden um aus einem Zeitraum alle Tage als Zeilen einer Ausgabe zu erhalten. Man könnte aber auch eine temporäre Tabelle mit allen in Frage kommenden Datumswerten erzeugen und diese als Ausgangspunkt nehmen.

Quelle: http://social.msdn.microsoft.com/fo...l/thread/3812511B-48CF-41DE-B219-C20DFE0D729E

Ich würde also alle Tage meines Zeitraums auflisten und dann wieder alle ausschließen die entweder nicht an dem passenden Wochentag oder nicht in dem Eventzeitraum liegen. Der Einfachheit halber gehe ich jetzt mal nur von einem Event aus. Wenn das ganze funktioniert müsste sich das erweitern lassen aber da ich eh MSSQL habe ich jetzt erstmal nur ein bischen mit dem im Link enthaltenen Code gespielt:

Code:
DECLARE    @anfangszeit SMALLDATETIME,
        @endzeit SMALLDATETIME

SELECT    @anfangszeit = '2013-01-03 00:00:000',
        @endzeit = '2013-31-03 00:00:000'

SELECT    *,
        datediff(dd,DatumVon,DatumBis) AS DifferenzTage
FROM    Test
WHERE (    DatumVon BETWEEN @anfangszeit AND @endzeit
OR        DatumBis BETWEEN @anfangszeit AND @endzeit )
AND        EventID IN (320140,320128,320147) -- Testzeiträume
320128 2013-03-22 00:00:00 2013-03-25 00:00:00 3
320140 2013-02-19 00:00:00 2013-03-25 00:00:00 34
320147 2013-03-25 00:00:00 2013-03-25 00:00:00 0

Code:
;
WITH
cteDateSequence(DateSeq) AS (
SELECT    @anfangszeit
UNION ALL
SELECT    dateadd(day,1,DateSeq)
FROM    cteDateSequence
WHERE    DateSeq < @endzeit
)
SELECT    *
FROM    cteDateSequence
OPTION    (MAXRECURSION 0)
2013-03-01 00:00:00
2013-03-02 00:00:00
2013-03-03 00:00:00
2013-03-04 00:00:00
2013-03-05 00:00:00
2013-03-06 00:00:00
2013-03-07 00:00:00
2013-03-08 00:00:00
2013-03-09 00:00:00
2013-03-10 00:00:00
2013-03-11 00:00:00
2013-03-12 00:00:00
2013-03-13 00:00:00
2013-03-14 00:00:00
2013-03-15 00:00:00
2013-03-16 00:00:00
2013-03-17 00:00:00
2013-03-18 00:00:00
2013-03-19 00:00:00
2013-03-20 00:00:00
2013-03-21 00:00:00
2013-03-22 00:00:00
2013-03-23 00:00:00
2013-03-24 00:00:00
2013-03-25 00:00:00
2013-03-26 00:00:00
2013-03-27 00:00:00
2013-03-28 00:00:00
2013-03-29 00:00:00
2013-03-30 00:00:00
2013-03-31 00:00:00

Vieleicht kommst du mit dem Ansatz weiter bzw. können wir dir noch weiter helfen.
 
Zurück
Oben