2010-11-03 65 views
3

我希望start dates的所有員工的employee numbersstart dates等於最早的日期。如何制定這個SQL查詢?

我知道這是錯誤的。但只是寫作來展示我想要的東西。

SELECT  start_date, employee_no 
FROM   [employees] 
WHERE  (start_date = MIN(start_date)) 

回答

7

您近距離了!

SELECT  start_date, employee_no 
FROM   [employees] 
WHERE  start_date = (SELECT MIN(start_date) FROM employees) 
+3

您鍵入只是更快了,全是你的 – DevelopingChris 2010-11-03 20:58:12

+1

@DevelopingChris - 我只是複製和粘貼他並使其正確的! :) – JNK 2010-11-03 20:58:51

+1

當你發佈時,肯定有我們5人輸入。 – DevelopingChris 2010-11-03 20:59:46

0

這將做到這一點:

SELECT  start_date, employee_no 
FROM   [employees] 
WHERE  start_date = (select MIN(start_date) from [employees]) 
0
SELECT start_date, employee_no 
FROM  [employees] 
WHERE  start_date = (SELECT MIN(start_date) FROM [employees]) 
3

我會使用一個公用表表達式(CTE)來做到這一點。這就像創建臨時表。

;with EmpInfo as 
(
    SELECT start_date, employee_no, MIN(start_date) OVER() as MinStartDate 
    FROM [employees] 
) 
SELECT start_date, employee_no FROM EmpInfo WHERE start_date = MinStartDate 

這裏有一個微軟網頁約Using Common Table Expressions

+2

+1與其他人做的不同! :) – FrustratedWithFormsDesigner 2010-11-03 21:06:16

+0

根據執行計劃,性能稍好一些。我們有一個非常類似的員工數據表,所以我能夠輕鬆比較計劃。 :) – 2010-11-04 17:19:03