Quantcast
Channel: SQLcommitted » SQL SERVER 2012
Viewing all articles
Browse latest Browse all 4

SQL Server – New Analytical functions in SQL Server 2012 – Lead and Lag

$
0
0

LAG:

Using this function we can fetch the nth row before (Lag) the Current row without using self-join.

It is useful when we need to compare the current row values with values in a previous row.

Syntax:

LAG (scalar_expression [,offset] [,default])

    OVER ( [ partition_by_clause ] order_by_clause )

EXAMPLE:

Create an Employee table and insert some records to it.

CREATE TABLE  Employee (EmpID int, HikeDate date, Salary money)
GO
INSERT INTO employee values (1, '2009-04-01 00:00:00.000',10000),
(1, '2010-04-01 00:00:00.000',17000),
(1, '2011-04-01 00:00:00.000',23000)
GO


SELECT EmpID, HikeDate, Salary
FROM Employee
ORDER BY HikeDate

Output:

image

 

Now my requirement is to show what the previous Salary before current hike was?

Solution Using Lag function:

image

 

image

LEAD:

Using this function we can fetch the nth row after (LEAD) the current row without using self-join.

It is useful when we need to compare the current row values with values in a following row.

Syntax:

LEAD (scalar_expression [,offset] [,default])

OVER ( [ partition_by_clause ] order_by_clause )


Example:

My requirement is to show what my following year salary is?

 

Solution using Lead function:

image

image

 

Note: Default offset value is 1. We can specify offset value by a column or a sub query, or other expression that evaluates to a positive integer. Negative value or analytical function can’t be used as offset value.

If you liked this post, do like on Facebook at https://www.facebook.com/s4sql



Viewing all articles
Browse latest Browse all 4

Trending Articles