Aşağıdaki senaryoyu işlemek için bir yol arıyorum. Tabloda yer alan her "grup kimliği" için sadece bir kayıt döndürmek zorunda olduğum bir veritabanı tablom var, ayrıca her grupta seçilen kayıt hane içindeki en yaşlı kişi olmalıdır. her grubu kimliği olan eski insanlar Yani numarası 1 ve 3 gerekir I, yukarıda verilen örnek veriSQL sorgusu sadece grup kimliği başına 1 kayıt döndürmek için
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
, geri döndü.
Bu, bir SQL Server 2005 veritabanına göre sorgulanmaktadır.
Eğer adı istiyorsanız, en büyük yaşı olan> 1 kişiyseniz,> 1 satırını seçme şansınız var demektir. Bu durumda hangi adın da seçileceği konusunda kriterler oluşturmalısınız. –
İyi nokta Chris. Soruyu biraz basitleştirmeye çalışıyordu, ama bu gibi delikler çıkardı :-) Aslında cinsiyet için başka bir alanım var, bu yüzden bir hane içindeki en yaşlı erkeği seçmek istiyorum. eğer erkek varsa, o zaman en yaşlı kadın. Aynı yaşta aynı evde iki erkek olması durumunda, kayıtların sadece 1'ini seçmem gerekiyor. Bu, kravat kesicisinin en düşük ID numarasına sahip kişi kadar basit bir şey üzerine kurulabilir. –
Joe Celko'nun "Smart for Smarties" adlı mükemmel kitabının 21.4, "Extrema Functions" bölümündeki bu tür sorunların iyi bir tartışması var. Basit SELECTs ve INSERT'lerden daha zorlu bir şeye dönüşecek olursanız, bu kitabı kesinlikle tavsiye ederim. – shoover