2015-05-01 38 views
0

我想从上周五12PM到本周五12PM提交所有记录提交给SQL Server用于工资单。我有7天的工作时间,如下图所示,但我需要的是上周五的12PM到本周五的12PM。SQL Server:SELECT上周五下午12点到这个星期五12 PM

SELECT DISTINCT 
    notifications.requestid, 
    Max(timestatuschange), 
    assignedtouser, 
    Count(requestid) AS Total 
FROM 
    notifications 
WHERE 
    timestatuschange >= Dateadd(day, -7, Getdate()) 
    AND notifications.status = 'Yellow' 
    OR timestatuschange >= Dateadd(day, -7, Getdate()) 
    AND notifications.status = 'Red' 
    OR timestatuschange >= Dateadd(day, -7, Getdate()) 
    AND notifications.status = 'Blue' 
GROUP BY 
    requestid, 
    assignedtouser 
+0

的SQL Server版本是你使用? – ughai

+0

Azure SQL Server –

+0

请定义上星期五和这个星期五。通过这个星期五,你的意思是今天如果是星期五和未来的一些点,如果不是星期五? – Hogan

回答

1

由于您使用GETDATE(),我假设今天是星期五,你可以尝试这样的事情

SELECT DATEADD(hour,12,CONVERT(VARCHAR(10),GETDATE(),112)), 
DATEADD(day,-7,DATEADD(hour,12,CONVERT(VARCHAR(10),GETDATE(),112))) 

您所查询的是

DECLARE @StartDate DATETIME = DATEADD(day,-7,DATEADD(hour,12,CONVERT(VARCHAR(10),GETDATE(),112))) 

DECLARE @EndDate DATETIME = DATEADD(hour,12,CONVERT(VARCHAR(10),GETDATE(),112)) 

SELECT DISTINCT notifications.requestid, 
       Max(timestatuschange), 
       assignedtouser, 
       Count(requestid) AS Total 
FROM notifications 
WHERE timestatuschange >= @StartDate 
     AND timestatuschange <= @EndDate 
     AND notifications.status IN ('Yellow','Red','Blue') 
GROUP BY requestid, 
      assignedtouser 
+0

我的意思是今天是星期五,它是当工资单人员需要在中午截止时间之后的某个时间检查清单时。 –

+0

编辑过的SQL也很好地执行,但由于某种原因,在以前的SQL中提供了2个额外的记录。一旦我完成审计,我可能会明白为什么。 –

相关问题