• Why not simplify the whole thing by doing something like this:

    SET @reportDate = '2009-01-10 00:00:00.000' --hard coded date for now

    SELECT

    sr.SiteName,

    b.BldgName AS BuildingName,

    mm.CommodityType,

    @reportDate AS DaySelected,

    DATEPART(hour, dls.TimeStampUTC) AS [HOUR],

    MAX(dl.value) AS MaxValue,

    MIN(dl.value) AS MinValue,

    (MAX(dl.value) - MIN(dl.value))AS Consumption

    FROM

    Ion_Data_Test..DataLogStamp dls

    INNER JOIN Ion_Data_Test..DataLog dl

    ON dls.ID = dl.DataLogStampID

    INNER JOIN ION_Data_Test..Source s

    ON s.ID = dls.SourceID

    INNER JOIN TEE..MeterMapper mm

    ON mm.Meter_Name = s.Name

    INNER JOIN TEE..TEGInstance ti

    ON mm.TEGInstanceID = ti.ID

    INNER JOIN TEE..SiteRef sr

    ON sr.ID = ti.SiteRefID

    INNER JOIN TEE..Building b

    ON b.ID = mm.Bldg_ID

    WHERE

    dls.SourceID = 8

    AND dl.QuantityID = '10005' --KWH

    AND mm.CommodityType = 'ELECTRICITY'

    AND dls.TimeStampUTC >= @reportDate

    AND dls.TimeStampUTC < @reportDate + 1

    GROUP BY

    sr.SiteName,

    b.BldgName,

    mm.commodityType,

    DATEPART(hour, dls.TimeStampUTC);

    Also, there's a more efficient way to round to the nearest hour:

    declare @TimeVariable datetime;

    select @TimeVariable = '6/9/09 4:11 PM';

    select dateadd(hour, datediff(hour, 0, @TimeVariable), 0);

    - Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
    Property of The Thread

    "Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon