title: Split Time Frequency To Rows
body: <p>I am trying to split a time frequency that has a start time, an end time, a frequency and a duration into separate rows. Here is some example data:</p>
  
  <pre><code>+------+------------+----------+-----------------+---------------+
  | Name | Start_Time | End_Time | Frequency_Hours | Duration_Mins |
  +------+------------+----------+-----------------+---------------+
  | A    | 08:00:00   | 18:00:00 |               2 |             2 |
  | B    | 00:00:00   | 23:59:59 |               1 |             5 |
  | C    | 00:00:00   | 23:59:59 |               4 |            15 |
  +------+------------+----------+-----------------+---------------+
  </code></pre>
  
  <p>Can be created using the following query:</p>
  
  <pre><code>DECLARE @Tmp AS TABLE(Name VARCHAR(128)
                       ,Start_Time VARCHAR(8)
                       ,End_Time VARCHAR(8)
                       ,Frequency_Hours INT
                       ,Duration_Mins INT)
  
  INSERT INTO @Tmp VALUES ('A','08:00:00', '18:00:00', 2,2)
                         ,('B','00:00:00', '23:59:59', 1,5)
                         ,('C','00:00:00', '23:59:59', 4,15)
  </code></pre>
  
  <p>Here is my desired output (I will then use this to drive a gantt chart visualisation):</p>
  
  <pre><code>+------+------------+----------+
  | Name | Start_Time | End_Time |
  +------+------------+----------+
  | A    | 08:00:00   | 08:02:00 |
  | A    | 10:00:00   | 10:02:00 |
  | A    | 12:00:00   | 12:02:00 |
  | A    | 14:00:00   | 14:02:00 |
  | A    | 16:00:00   | 16:02:00 |
  | A    | 18:00:00   | 18:02:00 |
  | B    | 00:00:00   | 00:05:00 |
  | B    | 01:00:00   | 01:05:00 |
  | B    | 02:00:00   | 02:05:00 |
  | B    | 03:00:00   | 03:05:00 |
  | B    | 04:00:00   | 04:05:00 |
  | B    | 05:00:00   | 05:05:00 |
  | B    | 06:00:00   | 06:05:00 |
  | B    | 07:00:00   | 07:05:00 |
  | B    | 08:00:00   | 08:05:00 |
  | B    | 09:00:00   | 09:05:00 |
  | B    | 10:00:00   | 10:05:00 |
  | B    | 11:00:00   | 11:05:00 |
  | B    | 12:00:00   | 12:05:00 |
  | B    | 13:00:00   | 13:05:00 |
  | B    | 14:00:00   | 14:05:00 |
  | B    | 15:00:00   | 15:05:00 |
  | B    | 16:00:00   | 16:05:00 |
  | B    | 17:00:00   | 17:05:00 |
  | B    | 18:00:00   | 18:05:00 |
  | B    | 19:00:00   | 19:05:00 |
  | B    | 20:00:00   | 20:05:00 |
  | B    | 21:00:00   | 21:05:00 |
  | B    | 22:00:00   | 22:05:00 |
  | B    | 23:00:00   | 23:05:00 |
  | C    | 00:00:00   | 00:15:00 |
  | C    | 04:00:00   | 04:15:00 |
  | C    | 08:00:00   | 08:15:00 |
  | C    | 12:00:00   | 12:15:00 |
  | C    | 16:00:00   | 16:15:00 |
  | C    | 20:00:00   | 20:15:00 |
  +------+------------+----------+
  </code></pre>
  
  <p>I am hoping to be able to create a view out of this so I am trying to do it without cursors or other cpu intensive methods.</p>
  
  <p>Any ideas?</p>
  
  <p>Thanks,</p>
  
  <p>Dan.</p>