2013-04-23 71 views
0

后,我有一个表,前3项是像这样:SQL查询次数,如果DATEDIFF分组

name | jobnum | startdate | enddate 

name1 | 1  | 15/2/1990 | 11/3/1990 
name2 | 2  | 12/2/1991 | 13/2/1991 
name1 | 3  | 15/1/1997 | 11/2/1998 

我需要将它们分组,以便

它会告诉

name | #jobs | # of times job ends before 30 days 

我知道如何显示前2列。但最后一个让我困惑。

SELECT Table1.name, Count(Table1.start) AS #jobs 
FROM Table1 
GROUP BY Table1.name 

谢谢。

回答

0

尝试以下,这是未经测试,我相信你可以减去日期的访问,但如果不使用相同的理论,但DATEDIFF函数....

SELECT Table1.name, Count(Table1.start) AS #jobs, 
    sum(IIF(Table1.enddate - Table1.Startdate < 30,1,0)) As LessThan30Days 
FROM Table1 
GROUP BY Table1.name 
+0

谢谢你,似乎有工作。我假设30,1,0帐户的日/月/年的差异? – 2013-04-23 03:46:18

+0

公式的语法是对IIF公式的结果进行求和,30是天数(标准),1是满足标准(<30)时要返回的内容,如果不满足则为0,因此,每次日期差异小于30时,它加1,如果是30天或更多天差异,则加0。 – Simon1979 2013-04-23 03:57:27