2012-08-13 121 views
0

我有一份报告,我正在为我需要一些帮助的工作而努力。下面的查询显示了我迄今为止所做的工作,现在我需要的是能够获得每天以每天为基础放弃的每个学生的信息,而不是一次给我一个总计,换句话说就是开始例如,在04-23和05-23之间,而不是一次获得总数,我希望它在当时的每一天提供结果,意味着今天的结果将显示从04-23到04-26,并且明天它会更新以显示04-23至04-27的结果等等。如果有人能请求帮助,我将不胜感激。感谢智者SQL日期间隔比较

SELECT 
     COUNT (dbo.cst_AdCancelsQE_vw.priorqecounter) AS 'Prior to QE', 
     COUNT (dbo.cst_AdCancelsQE_vw.duringqecounter) AS 'During QE', 
     COUNT (dbo.cst_AdCancelsQE_vw.afterqecounter) AS 'After QE', 
     dbo.cst_AdCancelsQE_vw.Division, 
     dbo.cst_AdCancelsQE_vw.Campus, 
     LEFT(CONVERT (VARCHAR,dbo.cst_AdCancelsQE_vw.Startdate , 101), 10)AS 'Start Date' 


FROM dbo.cst_AdCancelsQE_vw 
     --JOIN dbo.cst_AdStatusChanges_vw 
      --ON dbo.cst_AdCancelsQE_vw.NewStatDescrip = dbo.cst_AdStatusChanges_vw.NewStatDescrip 
WHERE StartDate IN ('2012-04-23', '2012-05-07', '2012-03-12') 


GROUP BY dbo.cst_AdCancelsQE_vw.division, dbo.cst_AdCancelsQE_vw.campus, dbo.cst_AdCancelsQE_vw.startdate 
ORDER BY dbo.cst_AdCancelsQE_vw.division, dbo.cst_AdCancelsQE_vw.campus ASC 

回答

0

代替WHERE今天,昨天和前天,你应该说今天与今天 - 3天。

WHERE StartDate Between getdate() and getdate()-3 

这里有一个过去3天的例子。你应该能够修复你的需求。 这样你每天都有一个查询,如果你今天运行,你会得到最近3天的结果,当它是明天,再次运行时,你会得到一组新的结果。

+0

感谢丹尼尔,一个问题,但如果我使用getdate的开始日期是04-23-2012这显然不是今天的日期,是不是没有工作? – frank 2012-08-13 04:08:46

+0

不,'getdate()'只适用于今天。如果你想考虑一个不适用于'getdate()'的区间,你有几个选择。 1:做'getdate() - X',X是需要的天数。例如如果你需要一个星期前的日期,你可以在getdate() - 7和getdate() - 10之间进行操作。第二选项。您在WHERE条件之外设置变量。然后你做'在MyVariable和MyVariable之间 - 3'。希望这可以帮助。 – 2012-08-13 09:53:51