2010-06-25 53 views
5

嗨,我有以下表的結構是這樣的:SQL查詢,不同的行所需

row structure

所以基本上你可以看到,該部門經過名稱變更每隔幾年。以數字16爲例。我想要一個選擇查詢,只有當日期最大時纔會獲得該名稱。我怎麼做?

+1

哪個數據庫引擎? – Blorgbeard 2010-06-25 17:58:45

+0

訪問表,使用訪問2007 – masfenix 2010-06-25 17:59:08

回答

5
select ID, Name from departments o 
where o.thedate= 
    (select max(i.thedate) from departments i where o.id=i.id) 
+0

Thankyou,工作得很好。 – masfenix 2010-06-25 18:10:39

0

此表的主要關鍵是什麼?這可以通過名稱比較對同一個表進行子查詢。

SELECT 
    id, 
    name, 
    date 
FROM table 
WHERE name = (SELECT TOP 1 name 
       FROM table AS subtable 
       WHERE subtable.name = table.name 
       ORDER BY date DESC) 
1
SELECT ID, 
First(Name) AS FirstOfName, First(DateChange) AS FirstOfDateChange 
FROM departments 
GROUP BY ID 
ORDER BY First(DateChange) DESC; 
+0

+1爲Alt。解。按ID分組扔了我,但在這種情況下,它是重複的數據字段。 – JeffO 2010-06-26 11:36:31

0

SELECT d。* FROM 部門ð INNER JOIN(SELECT PK FROM部門 GROUP BY ID HAVING theDate = MAX(theDate))M於m.pk = d .pk WHERE [Name] =「部門」

+0

這比接受的答案更好,因爲......? – 2010-06-29 22:16:37