2014-11-14 46 views
0

集團按日期 - 月 - 晝小時和時間查詢集團按日期 - 月 - 晝小時和時間查詢

我想通過Rundate組,然後通過JobDateStamp YY/MM/DD HH:MM 沒有秒

結果

[RunDate]   [count] 
12/11/2014 21:00  3 
13/11/2014 21:00  1 

3批的工作崗位上二〇一四年十二月十一日(3日期和時間)運行 1大量的工作崗位上13/1運行二千〇一十四分之一(1日期和時間)

**create table tbl_tasks** 

( 
Rundate datetime, 
JobDateStamp datetime, 
Runs int 
) 

insert into tbl_tasks values 
('2014-11-13 21:00:46.393','2014-11-13 21:36:27.393',1), 
('2014-11-13 21:00:46.393','2014-11-13 21:36:25.393',1), 
('2014-11-13 21:00:46.393','2014-11-13 21:36:24.393',1), 
('2014-11-12 21:00:47.000','2014-11-13 14:14:46.393',1), 
('2014-11-12 21:00:47.000','2014-11-13 14:12:46.393',1), 
('2014-11-12 21:00:47.000','2014-11-12 21:04:43.393',1), 
('2014-11-12 21:00:47.000','2014-11-12 21:04:41.393',1) 

這個數據是一個查詢和下一個步驟的結果是,以由組 YY/MM/DD HH:MM

Rundate JobDateStamp運行
2014-11-13 21:00:46.393 2014-11-13 21:36:27.393 1
2014-11-13 21:00:46.393 2014-11-13 21:36:25.393 1
2014 -11-13 21:00:46.393 2014-11-13 21:36:24.393 1
2014-11-12 21:00:47.000 2014-11-13 14:14:46.393 1
2014-11-12 21:00:47.000 2014-11-13 14:12:46.393 1
2014-11 -12 21:00:47.000 2014-11-12 21:04:43.393 1
2014-11-12 21:00:00 47.000 2014-11-12 21:04:41.393 1

+0

什麼版本的SQL Server你正在用嗎? – Siyual 2014-11-14 21:00:22

+0

SQL 2008已嘗試dateadd但如下我得到7 – winchmore 2014-11-14 21:05:01

+0

@winchmore,你可以嘗試我的答案 – radar 2014-11-14 21:11:44

回答

2

可以通過轉換的時間來分鐘,並且使用count(distinct ..)

至於做你需要jobdatestamp進一步的過濾器,需要的,如果你正在使用SQL Server 2012使用它在數

SELECT dateadd(minute, datediff(minute, 0, rundate), 0) , 
     count(distinct dateadd(minute, datediff(minute, 0, JobDateStamp), 0)) 
FROM tbl_tasks 
GROUP by dateadd(minute, datediff(minute, 0, rundate), 0) 
+0

做得好老派! – winchmore 2014-11-14 21:11:24

1

把截斷日期時間前一分鐘和組由值:

select 
    dateadd(minute, datediff(minute, 0, Rundate), 0) RunDate, 
    COUNT(*) Count 
FROM tbl_tasks 
GROUP BY dateadd(minute, datediff(minute, 0, Rundate), 0) 
+0

謝謝已經嘗試dateadd但得到相同的可能需要一個數據透視計數? – winchmore 2014-11-14 21:05:40

+0

2014-11-12 21:00 2014-11-13 21:00 3 – winchmore 2014-11-14 21:07:12

0

,你也可以做一些利用Format的分組上:

Select Rundate, Count(*) Count 
From 
(
    Select Format(Rundate, 'yyyy/MM/dd HH:mm') Rundate, JobDateStamp, Runs 
    From tbl_tasks 
)A 
Group By Rundate 
+0

消息195,級別15,狀態10,行4 '格式'不是一個公認的內置函數名稱 – winchmore 2014-11-14 21:09:25

+0

啊,只是注意到你正在使用'Sql Server 2008'。是的,這種方法不適用。 – Siyual 2014-11-14 21:13:07