Tôi đang tìm cách xử lý kịch bản sau đây. Tôi có một bảng cơ sở dữ liệu mà tôi cần phải trả về chỉ một bản ghi cho mỗi "id nhóm" được chứa trong bảng, hơn nữa bản ghi được chọn trong mỗi nhóm phải là người lâu đời nhất trong hộ gia đình.Truy vấn SQL chỉ trả lại 1 bản ghi cho mỗi ID nhóm
ID Group ID Name Age
1 134 John Bowers 37
2 134 Kerri Bowers 33
3 135 John Bowers 44
4 135 Shannon Bowers 42
Vì vậy, trong dữ liệu mẫu được cung cấp ở trên, tôi cần ID 1 và 3 trả về vì chúng là những người lâu đời nhất trong mỗi id nhóm.
Điều này đang được truy vấn dựa vào cơ sở dữ liệu SQL Server 2005.
Nếu bạn muốn tên, bạn vẫn có cơ hội chọn> 1 hàng nếu bạn có> 1 người có tuổi già nhất. Bạn cũng nên thiết lập các tiêu chí về tên cần chọn trong trường hợp đó. –
Điểm tốt Chris. Đã được cố gắng để simplifiy câu hỏi một chút, nhưng mà lá lỗ như thế này :-) Tôi thực sự có một lĩnh vực khác cho giới tính, vì vậy tôi đang tìm cách chọn nam lâu đời nhất trong một hộ gia đình. nếu có nam, thì là nữ lớn nhất. Trong trường hợp có hai nam giới trong cùng một hộ gia đình có cùng độ tuổi thì tôi chỉ cần chọn 1 trong số các hồ sơ. Điều này có thể được dựa trên một cái gì đó đơn giản như là người có số ID thấp nhất cho bộ ngắt kết nối. –
Có một cuộc thảo luận tốt về loại vấn đề này trong phần 21.4, "Chức năng Extrema", trong cuốn sách tuyệt vời của Joe Celko "SQL cho Smarties". Nếu bạn đang đi để chạy vào bất cứ điều gì phức tạp hơn SELECT đơn giản và INSERTs, tôi rất khuyên bạn nên cuốn sách này. – shoover