Percentage difference of the last value from the previous values of a column based on certain data group within the same table
If your version of SQL Server is recent enough (2012+), the problem can be solved with the window/analytic function LAST_VALUE():

Column4 = (LAST_VALUE(Column3) OVER (PARTITION BY Column2 ORDER BY Column1) 
           - Column3) / Column3 * 100


or FIRST_VAUE() with inverse order:

Column4 = (FIRST_VALUE(Column3) OVER (PARTITION BY Column2 ORDER BY Column1 DESC) 
           - Column3) / Column3 * 100