2014-11-14 83 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