Вам необходимо выполнить следующие шаги:
Предложение OUTPUT просто вставляет строки в табличную переменную, т. Е. Отображение строки в одну строку. Вам необходимо соответствующим образом изменить определение таблицы.
Теперь вы можете использовать CROSS APPLY, чтобы получить желаемый результат.
**TEST SETUP**
Create table #Emp(
id int ,
fname varchar(100),
lname varchar(100)
)
ТЕСТ
declare @aud table(oldfname varchar(100),fname varchar(100),oldlname varchar(100), lname varchar(100));
INSERT INTO #EMP(id,fname,lname)
OUTPUT '' as oldfname,inserted.fname, '' as oldlname, inserted.lname INTO @aud
values (1,'malcolm','dsouza');
SELECT property, oldval, newval as oldValue
FROM @aud
CROSS APPLY
( values('fname',oldfname,fname),('lname',oldlname, lname)) as t(property,oldVal, newVal)
Результирующий набор
+----------+--------+----------+
| property | oldval | oldValue |
+----------+--------+----------+
| fname | | malcolm |
| lname | | dsouza |
+----------+--------+----------+