Take a look at the attached workbook and let me know if it's what you're thinking.
For challenges like this, it works better if the data is in this structure.
Appt ID Status Time 1 Start xxx 2 Start xxx 3 Start xxx 1 End yyy 2 End yyy 3 End yyy
I used the Pivot capability in Tableau to structure this way, which allows us to track how many appts are open at any given time.
Open Appts.twbx 115.8 KB
To achieve your requirement, you need a calendar datetime table, something like below
Calendar DateTime 12/06/2017 00:00 12/06/2017 01:00 12/06/2017 02:00 12/06/2017 03:00 12/06/2017 04:00 12/06/2017 05:00
and cross join your data to this calendar table in data source level. Then you will get the hourly block for your data.
I attached workbook with my solution, below is a snapshot of the result (I just pick up all the appointment starts between 00-04 am for 2017-06-12 as example)
Hope this could help