• First approach that came to mind:

    1. Setup a tally table in your environment.

    SET NOCOUNT ON ;

    GO

    -- Credit: http://www.sqlservercentral.com/articles/T-SQL/62867/

    --DROP TABLE dbo.tally

    --=============================================================================

    -- Create and populate a tally table

    --=============================================================================

    IF NOT EXISTS ( SELECT *

    FROM sys.objects

    WHERE object_id = OBJECT_ID(N'dbo.tally')

    AND type IN (N'U') )

    BEGIN

    --===== Create and populate the tally table on the fly

    SELECT TOP 11000 --equates to more than 30 years of dates

    IDENTITY( INT,1,1 ) AS n

    INTO dbo.tally

    FROM master.dbo.SysColumns sc1,

    master.dbo.SysColumns sc2

    --===== Add a Primary Key to maximize performance

    ALTER TABLE dbo.tally

    ADD CONSTRAINT PK_Tally_N

    PRIMARY KEY CLUSTERED (n) WITH FILLFACTOR = 100

    --===== Let the public use it

    GRANT SELECT, REFERENCES ON dbo.tally TO PUBLIC

    PRINT 'Created tally table.'

    END

    GO

    2. Use the tally table to create a time-table with a start and end time that spans 5 minute increments:

    SELECT DATEADD(minute, n - 5, CAST(CAST(GETDATE() AS DATE) AS DATETIME)) AS StartTime,

    DATEADD(millisecond, n * 60000 - 3, CAST(CAST(GETDATE() AS DATE) AS DATETIME)) AS EndTime

    FROM DBA.dbo.tally

    WHERE n > 0

    AND n % 5 = 0

    AND n <= 1440;

    3. Use the time-table created in step 2 to join to the Watson table to group events into 5 minute buckets.

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato