Eh bien, en utilisant Sql Server 2005, vous pouvez essayer quelque chose comme
DECLARE @Table TABLE(
ID INT,
StartDate DATETIME,
EndDate DATETIME
)
INSERT INTO @Table (ID,StartDate,EndDate) SELECT 1, '25 Jan 2009', '31 Jan 2009'
INSERT INTO @Table (ID,StartDate,EndDate) SELECT 2, '01 Jan 2009', '07 Jan 2009'
INSERT INTO @Table (ID,StartDate,EndDate) SELECT 3, '01 Jan 2009', '14 Jan 2009'
DECLARE @MinDate DATETIME,
@MaxDate DATETIME
SELECT @MinDate = MIN(StartDate) ,
@MaxDate = MAX(EndDate)
FROM @Table
--Create a temp result set between the Min and Max dates, with all dates, and their weekday names
;WITH DayValues AS(
SELECT @MinDate DateVal,
DATENAME(dw, @MinDate) DateValName
UNION ALL
SELECT DateVal + 1,
DATENAME(dw, DateVal + 1) DateValName
FROM DayValues
WHERE DateVal + 1 <= @MaxDate
),
--select the count of days for each StartDate and EndDate pair, excluding Saturdays and Sundays
DateCounts AS(
SELECT ID,
(
SELECT COUNT(1)
FROM DayValues
WHERE DateVal BETWEEN StartDate AND EndDate
AND DateValName NOT IN ('Saturday', 'Sunday')
) DateCount
FROM @Table
)
--Now group and count
SELECT DateCount,
COUNT(ID) TotalCount
FROM DateCounts
GROUP BY DateCount
OPTION (MAXRECURSION 0)
Sortie
DateCount TotalCount
----------- -----------
5 2
10 1
EDIT: Brève explenation
Vous devez déterminer le nombre de jours entre (et incluant) 2 dates, qui ne sont pas des week-ends. Par conséquent, en utilisant un CTE, je crée un ensemble de résultats temporaires entre les dates Min et Max et leur nom de jour de la semaine (par exemple lundi, mardi ... dimanche). Puis, pour chacune de vos paires de date, je compte le nombre d'entrées qui ne correspondent pas au samedi et au dimanche.
Pouvez-vous ajouter des tables à votre source de données? Je peux voir un moyen de le faire avec des tables de recherche spéciales à l'intérieur de SQL Server. En outre, peut voir un moyen de le faire à l'intérieur de l'ASP en utilisant une boucle. De quelle façon préférez-vous? –
Oui, je peux ajouter des tables à ma source de données mais je pense que je préférerais une solution ASP à l'ajout de tables. – tonyyeb
Quelle version de Sql Server utilisez-vous? –