6
กำลังดึงข้อมูลแถว n ต่อกลุ่ม
ฉันมักจะต้องเลือกจำนวนแถวจากแต่ละกลุ่มในชุดผลลัพธ์ ตัวอย่างเช่นฉันอาจต้องการแสดงมูลค่าการสั่งซื้อล่าสุด 'n' ที่สูงที่สุดหรือต่ำสุดต่อลูกค้า ในกรณีที่ซับซ้อนมากขึ้นจำนวนแถวที่จะแสดงอาจแตกต่างกันไปในแต่ละกลุ่ม (กำหนดโดยแอตทริบิวต์ของการจัดกลุ่ม / ระเบียนหลัก) ส่วนนี้เป็นทางเลือก / สำหรับเครดิตเพิ่มเติมและไม่ได้มีเจตนาเพื่อห้ามไม่ให้คนตอบรับ ตัวเลือกหลักสำหรับการแก้ไขปัญหาประเภทนี้ใน SQL Server 2005 และรุ่นที่ใหม่กว่าคืออะไร อะไรคือข้อดีและข้อเสียหลักของแต่ละวิธี? ตัวอย่าง AdventureWorks (เพื่อความชัดเจนและเป็นตัวเลือก) แสดงวันที่ล่าสุดของการทำธุรกรรมห้าครั้งและรหัสจากTransactionHistoryตารางสำหรับแต่ละผลิตภัณฑ์ที่เริ่มต้นด้วยตัวอักษรจาก M ถึง R เหมือนกันอีกครั้ง แต่มีnบรรทัดประวัติต่อผลิตภัณฑ์โดยที่nห้าเท่าของDaysToManufactureแอตทริบิวต์ผลิตภัณฑ์ เดียวกันสำหรับกรณีพิเศษที่ว่าเส้นหนึ่งของประวัติศาสตร์ที่ต่อผลิตภัณฑ์เป็นสิ่งจำเป็น (เดี่ยวรายการล่าสุดโดยผูกทำลายบนTransactionDateTransactionID