2015-05-01 39 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個額外的記錄。一旦我完成審計,我可能會明白爲什麼。 –

相關問題