Diff, не разворачивается - PullRequest
       1

Diff, не разворачивается

0 голосов
/ 06 января 2012

Я хочу получить разность двух наборов результатов, которые относительно дороги в производстве и соединении.Я упоминаю об этом, потому что могу представить решения (например, с использованием 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 */

, затем создайте два неотключенных набора результатов, один для старых значений, другой для новых, и затем присоединитесь к ним.Звучит ужасно.Есть ли более простой способ сделать это?

1 Ответ

0 голосов
/ 06 января 2012

Что ж, вы остановились на ELSE, и если одно из этих значений (или, что еще хуже, оба) равно NULL, сравнение также будет ложным.получим.

Если набор различий обычно невелик (но работа по его получению велика), вы можете вставить только различия во временные таблицы и затем работать с техникой,t как визуально не элегантный (но который требует многократного сканирования).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...