Here's test data & a solution from another forum. :)--===== If test table exists, drop it IF OBJECT_ID('TempDB..PublicHols','U') IS NOT NULL DROP TABLE PublicHols--===== Create test table CREATE TABLE PublicHols ( ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, Descr CHAR(64), StartDate DATETIME, EndDate DATETIME )--===== Special conditions SET DATEFORMAT DMY--===== Insert test data into test table INSERT INTO PublicHols (Descr,StartDate,EndDate) SELECT 'Fiestas Patrias','17/09/2007', '19/09/2007' UNION ALL SELECT 'Thanksgiving Break','22/11/2007', '23/11/2007' UNION ALL SELECT 'Australia Day','26/01/2010', '26/01/2010' UNION ALL SELECT 'Anzac Day','25/04/2010', '25/04/2010' UNION ALL SELECT 'Christmas Break','25/12/2010', '26/12/2010'--==== Gather the dataselect h.ID, h.Descr, h.StartDate, h.EndDate, cast(h.EndDate-h.StartDate as integer)+1 as Daysfrom PublicHols h --==== One solution to the problem (from another forum)select h.ID, h.Descr, dateadd(dd, n.number, h.StartDate) as HolDate, 1 as Daysfrom master..spt_values n join PublicHols h on n.type = 'P' and dateadd(dd,n.number,h.StartDate) between h.StartDate and h.EndDate
SQL Server 2000 (& 2005)