I have this almost perfect mdx:

with
member [IACD_InboundTypes].Special2 as 'Aggregate({[IACD_InboundTypes].[All InboundTypes].[Sales] })'
set TimeRange as '([TimeByHour].[All TimeByHour].[2005].[May].[19]: [TimeByHour].[All TimeByHour].[2005].[May].[23])'
select
{[Measures].[Calls] , [Measures].[Main Sales] } on columns,
generate ( TimeRange , crossjoin ({[TimeByhour].currentmember} ,{[TimeByMinute].[All TimeByMinute].[2005].[May].[19].children} ))
On rows
from ACD_Calls
where ([IACD_InboundTypes].Special2)

That gives me a day of the month on the left crossjoined with the hours of the day on the right. Obviously, May 19th works great, but the other days (20th through the 23rd) have nothing in the hours. I'm doing it this way to work best with the Reporting Services Matrix.
Please help with the rest so that the crossjoin finds each hour range for the rest of the days.

Thanks all!
Richard