2010-06-25 33 views
5

Hey guys, tôi có bảng sau có cấu trúc như thế này:truy vấn SQL, hàng riêng biệt cần thiết

row structure

Vì vậy, về cơ bản là bạn có thể thấy, các bộ phận đi qua tên thay đổi mỗi vài năm. Hãy xem số 16 chẳng hạn. Tôi muốn một truy vấn chọn sẽ chỉ nhận được tên khi ngày là lớn nhất. Làm thế nào để làm điều đó?

+1

Động cơ cơ sở dữ liệu nào? – Blorgbeard

+0

Bảng truy cập, sử dụng quyền truy cập 2007 – masfenix

Trả lời

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

Cảm ơn, đã làm việc rất đẹp. – masfenix

0

Khóa chính cho bảng này là gì? Điều này làm một truy vấn con cùng bảng với một so sánh tên.

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 cho Alt. Dung dịch. Nhóm của ID đã ném cho tôi, nhưng trong trường hợp này, nó là trường dữ liệu trùng lặp. – JeffO

0

CHỌN d. * TỪ Sở d INNER JOIN (SELECT pk TỪ Sở GROUP BY ID CÓ theDate = MAX (theDate)) m ON m.pk = d .pk WHERE [Name] = "Department"

+0

Điều này tốt hơn câu trả lời được chấp nhận vì ...? –

Các vấn đề liên quan