Я хочу получить разность двух наборов результатов, которые относительно дороги в производстве и соединении.Я упоминаю об этом, потому что могу представить решения (например, с использованием UNION
), которые требуют объединения наборов несколько раз.Мне нужно это в следующем формате: Name sysname, OldValue varchar(max), NewValue varchar(max)
.
Допустим, оба набора результатов выглядят как FirstName varchar(32), LastName varchar(32), Age int, BirthDate datetime
, плюс несколько соединяющихся столбцов, которые не будут влиять на набор результатов diff.1007 * Моя первая мысль - что-то вроде
select
case when a.FirstName <> b.FirstName then a.FirstName as FirstName_Old,
case when a.FirstName <> b.FirstName then b.FirstName as FirstName_New,
/* and so on, for remaining columns */
, затем создайте два неотключенных набора результатов, один для старых значений, другой для новых, и затем присоединитесь к ним.Звучит ужасно.Есть ли более простой способ сделать это?