2011-08-16 19 views
7

我有一個要求,例如必須拉出用戶選擇的日期範圍內的所有記錄,選擇所有從2011年1月15日開始到2011年8月20日的員工以及按日期分組。我們是否可以使用group by和where條件具有相同的字段名稱

我應該怎麼寫這個SQL查詢:

SELECT * 
    FROM employees 
    WHERE startdate >= '15-jan-2011' 
    AND startdate <= '20-aug-2011' 
GROUP BY startdate 
+3

您的需求是沒有意義的書面。如果您有關於1月15日開始了兩名員工,還給你到底想要什麼?你能告訴一些示例數據和預期的結果,請,包括在多個員工被錄用,在同一天的情況?另外,如果兩個員工有不同的工資或名稱,你想要什麼回來了?也許你誤解了「GROUP BY」呢? –

回答

9

絕對。這將導致在您的日期範圍過濾記錄,然後通過每天那裏是數據分組它。

應當注意的是,你只能選擇開始日期,然後不管聚集你計算。否則,它應該工作得很好。

例如,下面的查詢會給你每個STARTDATE員工的計數:

SELECT startdate, count(*) 
FROM employees 
WHERE startdate >= '15-jan-2011' 
     AND startdate <= '20-aug-2011' 
GROUP BY startdate 
1

可以,但「GROUP BY」子句是用於行集組合在一起,所以也沒有有意義的提問(或任何涉及一個「SELECT *」)。

雖則回答你的問題:

SELECT DATEADD(dd, 0, DATEDIFF(dd,0,StartDate)) AS 'StartDate', <other fields> 
FROM Employees 
WHERE StartDate BETWEEN '15-Jan-2011' AND '20-Jan-2011' 
ORDER BY StartDate 

注:從日期時剝離來自here

相關問題