MSSQL: Zeile nach Datums bereich auswählen

Zvoni

Erfahrenes Mitglied
Bin jetzt im Wochende. Montag wieder.
zeile 7 könnte es das RECURSIVE sein
zeile 13 kann es sein, dass man das WITH wiederholen muss
 

brauh

Mitglied
OK... dann doch diese Tabelle also Lösung?
1616398954645.png

Wäre für mich auch vollkommen in Ordnung.
Oder den bisherigen Code weiter anpassen?
 

Zvoni

Erfahrenes Mitglied
MSSQL kann definitiv rekursive CTE's.
Kommt jetzt nur noch drauf an, es herauszufinden wie es geht (Bin kein MSSQL-Experte)
Mal schauen ob @Yaslaw den Thread findet
 

brauh

Mitglied
Hallo @Zvoni ,

dieser "teil code' funktioniert. Mir fehlt jetzt nur noch wie man das Ganze noch in
SELECT A1.mrID, A1.Date, A1.mrNewFieldValue
FROM ( ....

)As A1
WHERE
DATEPART(day.Date)=1
reinpackt.

Vielleicht hast du ja noch eine Idee.

Viele Grüße
SQL:
       Declare @FromDate Date = '2021-01-01',
               @ToDate   Date = '2021-03-25'

        ;WITH cnt (Date) AS
        (
            SELECT @FromDate
            UNION ALL
    
            SELECT DATEADD(day, 1, Date)
            FROM cnt
            WHERE Date < @ToDate

        ), cte As
        (
            SELECT mrID, Min(mrTimestamp) As MinStamp, Max(mrTimeStamp) As MaxStamp
            FROM footprints.dbo.MASTER8_FIELDHISTORY GROUP BY mrID
        )
    
        SELECT cte.mrID, cnt.Date, cte.MinStamp, cte.MaxStamp,
        (
            SELECT TOP 1 T1.mrNewFieldValue
            FROM footprints.dbo.MASTER8_FIELDHISTORY T1
            WHERE T1.mrID = cte.mrID AND T1.mrTimeStamp <= cnt.Date
            ORDER BY T1.mrTimeStamp DESC
        )
        As mrNewFieldValue
        FROM cte LEFT OUTER JOIN cnt
        ON cnt.Date BETWEEN cte.MinStamp AND cte.MaxStamp
        OPTION (MAXRECURSION 0) -- remove limit
 
Zuletzt bearbeitet: