Better solution to the Tricky SQL problem
Moran has pointed me to the CROSS APPLY syntax in T-SQL 2005, which does allows joining against a table valued function. Using this, the query goes down to this:
        SELECT
                EmpName,
                CONVERT(NVARCHAR, CurrentDate,103) Date,
                HasWorked = CASE SUBSTRING(Roster,
                        dbo.IndexInRoster(StartDate,CurrentDate,LEN(Roster)), 1)
                                WHEN '_' THEN 0
                                WHEN '*' THEN 1
                                ELSE NULL
                    END
FROM Schedules CROSS APPLY DateRange(StartDate,EndDate)
This is much nicer way to deal with it. Considerring that I am using similar techniques all over the place, this is a really good thing to know.
 

Comments
Comment preview