Creează o serie temporală pentru un an
Scopul acestui exercițiu este să creezi o serie de zile pentru un an întreg. Pentru această sarcină trebuie să folosești următoarele două funcții de timp/dată:
GETDATE()DATEADD(datepart, number, date)
Cu GETDATE() obții ora curentă (de exemplu, 2019-03-14 20:09:14), iar cu DATEADD(month, 1, GETDATE()) obții data curentă plus o lună (de exemplu, 2019-04-14 20:09:14).
Pentru a obține o serie de zile pentru un an, ai nevoie de 365 de pași de recursivitate.
Așadar, crește numărul de iterații folosind OPTION (MAXRECURSION n), unde n reprezintă numărul de iterații.
Acest exercițiu face parte din cursul
Interogări ierarhice și recursive în SQL Server
Instrucțiuni pentru exercițiu
- Inițializează ora curentă ca
time. - Selectează CTE-ul în mod recursiv și combină membrul ancoră cu membrul recursiv folosind instrucțiunea corectă.
- Limitează numărul de iterații la numărul de zile dintr-un an minus 1.
- Crește numărul maxim de iterații la numărul de zile dintr-un an folosind
OPTION (MAXRECURSION n).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
WITH time_series AS (
SELECT
-- Get the current time
___ AS time
UNION ALL
SELECT
DATEADD(day, 1, time)
-- Call the CTE recursively
FROM ___
-- Limit the time series to 1 year minus 1 (365 days -1)
WHERE time < GETDATE() + ___)
SELECT time
FROM time_series
-- Increase the number of iterations (365 days)
OPTION(MAXRECURSION ___)