2015-12-21 80 views
0

我想今年獲得日常訂單數在下午3點到下午3點的時間間隔TSQL組由下午3點到下午3點的時間間隔

Select cast(order_datetime as date) ,count(*) 
from order_table 
where order_datetime> '01/01/2015 15:00' 
group by ????? 

我通常按

cast(order_datetime as date) ---for 12am to 12am 

,但我想下午3點到下午3點。

+0

的可能的複製[如何按小時或一組時間由10分鐘](http://stackoverflow.com/questions/5002661/how-to-group-time-by-hour-or-by-10-minutes) – AleFranz

+0

我不明白如何適用於這個問題。該問題是關於10分鐘間隔的分組。我嘗試了'group by(datepart(hour,order_datetime)/ 24)',但沒有奏效。 –

+1

幾天前我回答了這樣的問題。 http://stackoverflow.com/questions/34322662/how-do-you-select-all-records-in-a-24-hour-time-period-and-summarize-the-data-in/34322991#34322991 The只需要一個比較開始時間,然後你基於它做一個datediff(hh ...)/ 24。編輯:它也取決於你的桌子的結構,所以你可能需要得到更具體的比日期時間(嗯...像datediff(mi ... - 答案它的結構與每小時日期時間。 – ZLK

回答

0

這可能是解決方案找我採取了樣本數據和表變量@t來解決它COL1在表是指你的問題

SET DATEFORMAT DMY 
DECLARE @t TABLE 
(
Id int, 
Name varchar(11), 
[Col1] DateTime 
) 

INSERT INTO @t 
VALUES(1,'ABC','22/12/2012 03:45:00 PM'),(2,'SD','22/12/2012 03:01:00 PM'),(3,'SDSA','22/12/2012 02:01:00 PM'),(4,'ASDF','22/12/2012 03:30:00 PM'),(5,'ASWER','22/12/2012 02:30:00 PM') 
,(11,'NARI','21/12/2012 03:40:00 PM') 

SELECT CASE WHEN CAST(COL1 AS TIME) >'15:00:00' THEN CAST(DATEADD(DAY,1,Col1) AS date) ELSE CAST(Col1 AS DATE) END AS ORDERS,COUNT(*) AS COUNT 
FROM @t 
GROUP BY CASE WHEN CAST(COL1 AS TIME) >'15:00:00' THEN CAST(DATEADD(DAY,1,Col1) AS date) ELSE CAST(Col1 AS DATE) END 
相關問題