تابع Lead و Lag در Sql Server چست و چه کاربردی دارد؟
در زمان طراحی کوئری، خیلی از مواقع نیاز است که به سطرهای قبل یا بعد از سطر جاری دسترسی داشته باشیم. یکی از روش های موجود استفاده از تابع Row number بود که از نسخه 2005 اس کیو ال به بعد پشتیبانی می شود. اما از نسخه 2012 دو تابع مفید Lead وLag قابل استفاده هستند.
تابع LAG : دستیابی به مقدار یک فیلد در سطرها قبل از سطر جاری
LAG (value_expression [,offset] [,
default
]) OVER ([query_partition_clause] order_by_clause)
تابع LEAD : دستیابی به مقدار یک فیلد در سطرها بعد از سطر جار
LEAD (value_expression [,offset] [,
default
]) OVER ([query_partition_clause] order_by_clause)
پارامترهای موجود در هر تابع به صورت زیر هستند:
value_expression : نام ستون مورد نظر
Offset: تعداد سطر بعد/قبل از سطر جاری
Default: مقدار پیش فرض در صورت خارج از رنج بودن Offset
query_partition_clause: گروهبندی روی ستون خاص
روش استفاده از تابع Lead را با یک مثال شرح خواهیم داد در این مثال قصد داریم کارمندان یک روز به تاریخ شروع پروژه بعدی را اضافه کنیم.
SELECT
*,
DATEADD(
DAY
, -1, LEAD(Emp_Startdate, 1,
'01-Jan-2100'
)
--کسر کردن یک روز از تاریخ رکورد بعدی
OVER (PARTITION
BY
Emp_Name
ORDER
BY
Emp_Startdate
ASC
))
AS
EndDate
FROM
Employee
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید