تمنح الدالة ROW_NUMBER() كل صف رقمًا متسلسلًا يبدأ من واحد داخل نافذة النتائج. نكتبها مع OVER، ونحدد داخل النافذة الترتيب الذي تعتمد عليه عملية الترقيم. لا تجمع هذه الدالة الصفوف ولا تحذفها، بل تضيف قيمة محسوبة إلى كل صف موجود في النتيجة.
تفيد هذه الطريقة عندما نريد اختيار أحدث سجل، أو أول كتاب بحسب عنوانه، أو عدد محدد من الموظفين بحسب الراتب. وإذا تساوت قيم الترتيب، تحصل الصفوف على أرقام مختلفة أيضًا. لذلك نضيف عمودًا فريدًا إلى الترتيب عندما نحتاج إلى تحديد ثابت للصف الذي يأتي أولًا.
مثال
WITH books AS (
SELECT 1 AS id, 'SQL Basics' AS title
UNION ALL
SELECT 2, 'SQL Basics'
)
SELECT id, title,
ROW_NUMBER() OVER (ORDER BY title, id) AS rn
FROM books
ORDER BY rn;
يستخدم المثال المعرّف لحسم التعادل بين العنوانين. يحصل الكتاب الأول على الرقم واحد والثاني على الرقم اثنين. أما الترتيب النهائي للعرض فيحدده ORDER BY الموجود خارج النافذة.
باختصار: تضيف ROW_NUMBER() رقمًا مختلفًا لكل صف، وتفيد عندما نحتاج إلى ترقيم الصفوف أو اختيار عدد محدد منها وفق ترتيب واضح.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.