2012-01-04 57 views
3

我從04/01/2012 00:00至05:00 2012/05/01集團通過值在凌晨4點到凌晨4點的SQL Server

讓數據說

StartDate    Value 
04/01/2012 00:00  10 
04/01/2012 05:00  10 
04/01/2012 08:00  10 

05/01/2012 01:00  10 
05/01/2012 04:00  10 
05/01/2012 05:00  10 

如果我按日期做一組

SUM(Value)... 
GROUP BY YEAR(StartDate), MONTH(StartDate),DAY(StartDate) 

從04/01/2012 00:00這組數據2012/05/01 00:00,總結全天值即30

但我需要組由differen T時間

即04/01/2012 04:00到04:00 2012/05/01,使結果將是40

如何實現這一目標。任何人這樣做之前...

回答

5
SUM(Value) 
... 
GROUP BY CAST(DATEADD(hour, -4, MyDateCol) AS Date) 
+0

感謝您的幫助@Michal和GBN – Madhan 2012-01-04 16:20:03

2
select dateadd(hh, 4, date) as date, total from (
    select 
     dateadd(dd, datediff(dd, 0, dateadd(hh, -4, startDate)), 0) as date, 
     sum(value) as total 
    from yourTable 
    group by dateadd(dd, datediff(dd, 0, dateadd(hh, -4, startDate)), 0) 
) t 

結果:

date     total 
2012-01-03 04:00:00.000 10 
2012-01-04 04:00:00.000 30 
2012-01-05 04:00:00.000 20 
相關問題