2011-02-25 157 views
1

我有以下查詢。每個駕駛執照號碼都有許多檢查日期。所以記錄如下:SQL Group by MAX(Date)

InspectionDate   DriverLicenseNumber 
2010-01-02 00:00:00   123 
2010-01-05 00:00:00   123 
2011-01-05 00:00:00   345 


    SELECT 
MAX(InspectionDate), 
DriverLicenseNumber 
FROM #Test 
GROUP BY DriverLicenseNumber 

爲什麼我仍然得到多個日期和相同的駕駛執照號碼?

感謝

+0

什麼是DriverLicenseNumber列的類型。那裏可能有空格/非打印字符? – 2011-02-25 14:18:08

+2

「GROUP BY」只會根據'DriverLicenseNumber'返回一行,必須有其他事情發生。 – 2011-02-25 14:18:31

+0

這就是我的想法。 DriverLicenseNumber是一個VARCHAR(25),並且重複的值是相同的。 – user380432 2011-02-25 14:26:53

回答

3

試試這個,它應該測試達的想法...

SELECT 
    MAX(InspectionDate), 
    CAST(DriverLicenseNumber AS INT) 
FROM 
    #Test 
GROUP BY 
    CAST(DriverLicenseNumber AS INT) 


或者,也許這...

SELECT 
    MAX(InspectionDate), 
    LTRIM(RTRIM(UPPER(DriverLicenseNumber))) 
FROM 
    #Test 
GROUP BY 
    LTRIM(RTRIM(UPPER(DriverLicenseNumber))) 
3

下面的代碼說明這並不是真正的問題,就像馬丁上面所說的,必須有別的事情上。

CREATE TABLE #test 
(
    a DATETIME, 
    id INT 
) 

INSERT INTO #test VALUES ('20100102', 123) 
INSERT INTO #test VALUES ('20100105', 123) 
INSERT INTO #test VALUES ('20110105', 345) 

SELECT MAX(a), id 
FROM #test 
GROUP BY id 

DROP TABLE #test 
1

只是改變DriverLicenseNumber在整數你表,然後您的查詢將按原樣運行。