ค่าก่อนหน้าและค่าถัดไป
ถ้าต้องการเลื่อนค่าในคอลัมน์ขึ้นหรือลงหนึ่งแถวทำได้อย่างไร? ใช้ขั้นตอนเดียวกับแบบฝึกหัดก่อนหน้า แต่เพิ่มฟังก์ชันใหม่สองตัว ได้แก่ LEAD() สำหรับค่าถัดไป และ LAG() สำหรับค่าก่อนหน้า โดยมีขั้นตอนดังนี้
- ขั้นแรก สร้าง partition
- จากนั้น เรียงลำดับตามคอลัมน์ที่ต้องการ
- สุดท้าย ใช้ฟังก์ชัน
LEAD()และ/หรือLAG()ตามความต้องการ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
SQL Server ระดับกลาง
คำแนะนำการฝึกหัด
- เขียนคิวรี T-SQL ที่สำหรับแต่ละพื้นที่ทำดังนี้
- เลื่อนค่าใน
OrderDateลงหนึ่งแถว แล้วตั้งชื่อคอลัมน์นี้ว่าPreviousOrder - เลื่อนค่าใน
OrderDateขึ้นหนึ่งแถว แล้วตั้งชื่อคอลัมน์นี้ว่าNextOrderจำเป็นต้องใช้ PARTITION BY ตามพื้นที่
- เลื่อนค่าใน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT TerritoryName, OrderDate,
-- Specify the previous OrderDate in the window
___(OrderDate)
-- Over the window, partition by territory & order by order date
___(___ BY ___ ___ BY ___) AS PreviousOrder,
-- Specify the next OrderDate in the window
___(OrderDate)
-- Create the partitions and arrange the rows
___ AS NextOrder
FROM Orders