Try this:
DECLARE @tmp TABLE([DAYName] VARCHAR(30), hours INT, WeekBeginDt DATETIME, WeekEndDt DATETIME)
INSERT INTO @tmp ([DAYName], hours, WeekBeginDt, WeekEndDt)
SELECT 'MonHrs', 8, '2010-01-18', '2010-01-24'
UNION ALL SELECT 'TueHrs', 8, '2010-01-18', '2010-01-24'
UNION ALL SELECT 'WedHrs', 8, '2010-01-18', '2010-01-24'
UNION ALL SELECT 'ThuHrs', 8, '2010-01-18', '2010-01-24'
UNION ALL SELECT 'FriHrs', 8, '2010-01-18', '2010-01-24'
UNION ALL SELECT 'SatHrs', 8, '2010-01-18', '2010-01-24'
;WITH MyDates AS
(
SELECT [DAYName], hours, WeekBeginDt AS CurrDate, WeekBeginDt, WeekEndDt
FROM @tmp
UNION ALL
SELECT [DAYName], hours, DATEADD(dd,1, CurrDate) AS CurrDate, WeekBeginDt, WeekEndDt
FROM MyDates
WHERE DATEADD(dd,1, CurrDate)<=WeekEndDt
)
SELECT *
FROM MyDates
WHERE LEFT(DATENAME(dw, CurrDate),3) + 'Hrs' = [DAYName]
ORDER BY CurrDate
In above example i used
Common Table Expression (CTE) .