Ok po długich kombinacjach udało mi się uzyskać dokładnie to o co mi chodziło (z użyciem UNPIVOT):
--TWORZYMY SOBIE TABELKĘ Z REJESTREM ZMIAN DO TESTÓW
create table #Customers
(
CustomerID int
,EmployeeID int
,Name varchar(max)
,Code varchar(max)
,ChangeDate date
)
INSERT INTO #Customers (CustomerID,Employeeid,Name, Code, ChangeDate)
VALUES(1,4,'ABC','5052','2017-02-01')
INSERT INTO #Customers (CustomerID,Employeeid,Name, Code, ChangeDate)
VALUES(1,4,'ABC','5111','2017-02-02')
INSERT INTO #Customers (CustomerID,Employeeid,Name, Code, ChangeDate)
VALUES(1,4,'ABC','5111','2017-02-03')
INSERT INTO #Customers (CustomerID,Employeeid,Name, Code, ChangeDate)
VALUES(1,4,'TESCO','1234','2017-02-04')
--WŁAŚCIWE ZAPYTANIE
--do 1 tabelki tymczasowej zapisuje sobie wartośći po ostatniej operacji, czyli aktualne
select
f.CustomerID as CustomerID
,cast(f.EmployeeID as VARCHAR(MAX)) as EmployeeID
,f.Name as Name
,Code as Code
into #temp1 from
(
select
*
,ROW_NUMBER() OVER(PARTITION by CustomerID ORDER by ChangeDate desc) as rownum
from #Customers
)
as f
where f.rownum = 1
order by f.CustomerID,f.rownum
--do 2 tabelki tymczasowej zapisuje sobie wartości sprzed ostatniej zmiany
select
f.CustomerID as CustomerID
,cast(f.EmployeeID as VARCHAR(MAX)) as EmployeeID
,f.Name as Name
,Code as Code
into #temp2 from
(
select
*
,ROW_NUMBER() OVER(PARTITION by CustomerID ORDER by ChangeDate desc) as rownum
from #Customers
)
as f
where f.rownum = 2
order by f.CustomerID,f.rownum
-- unpivotuje obie tabelki, odejmuje od siebie i wychodzą mi tylko kolumny, które się róznią. Tabelka pokazuje mi wartości sprzed ostatniej zmiany
SELECT f.* FROM
(
select CustomerID, Field, LastValue
from
(
select CustomerID, Code, Name, EmployeeID
from #temp2
) p
UNPIVOT(LastValue for Field in (EmployeeID, Name, Code)) as upvt
EXCEPT
select CustomerID, Field, LastValue
from
(
select CustomerID, Code, Name, EmployeeID
from #temp1
) p
UNPIVOT(LastValue for Field in (EmployeeID, Name, Code)) as upvt
) f
WHERE F.CustomerID = 1
DROP TABLE #temp1, #temp2
DROP TABLE #Customers