Welcome to Sign in | Help

Re: date saptaminale

  •  08-17-2009, 8:00 PM

    Re: date saptaminale

    Cel mai simplu ar fi dacă îţi construieşti o tabelă "Calendar" cu toate zilele din perioada admisibilă. Vezi:
    http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html

    Poţi să generezi tabela Calendar pe baza unei tabele cu numere, generată "on-the-fly" cu una din metodele descrise în:
    http://www.projectdmx.com/tsql/tblnumbers.aspx
    (eu prefer metoda cu CTE-uri a lui Itzik Ben-Gan: e foarte rapidă şi nu necesită crearea altor obiecte în baza de date).

    După aceea, poţi să faci un:
    SELECT MIN(Data), MAX(Data),
    SUM(CASE WHEN DATEPART(dw...)
    FROM Calendar INNER JOIN Concedii ON Data BETWEEN DataInceput AND DataSfarsit
    GROUP BY Persoana, DATEPART(wk...)

    Dacă nu vrei să stochezi tabela Calendar, poţi să o construieşti on-the-fly cu un table-valued UDF, la fel ca şi tabela de numere.

    La DATEPART ar trebui să iei în considerare şi @@DATEFIRST, pentru ca rezultatul să nu fie influenţat de SET DATEFIRST.

    (dacă ai nevoie de indicii mai precise, spune-ne...)

    Răzvan
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems