Hi Jason.
You can have something like this:
;WITH DateRange (CalcDate) AS (
SELECT CAST(@DateStart AS DATETIME)
UNION ALL
SELECT DATEADD(DAY, 1, CalcDate) FROM DateRange WHERE DATEADD(DAY, 1, CalcDate) < DATEADD(DAY, 1, @DateEnd)
)
SELECT DateRange.CalcDate, {Orders}.*
FROM DateRange
LEFT JOIN {Orders} ON {Orders}.[Date] = DateRange.CalcDate
AND {Orders}.[CustomerId] = @CustomerId
AND {Orders}.[Date] BETWEEN @DateStart AND @DateEnd
ORDER BY {Orders}.[Date]
OPTION(MAXRECURSION 0)
Be careful, this query uses recursion and may require heavy processing if you use a long date interval.
And it helps if (in this case) {Orders} entity is properly indexed.