Учитывая 2 или более строк, выбранных для слияния, одна из них идентифицируется как строка шаблона. Другие строки должны объединить свои данные со всеми столбцами нулевых значений, которые есть в шаблоне.
Пример данных:
Id Name Address City State Active Email Date
1 Acme1 NULL NULL NULL NULL blah@yada.com 3/1/2011
2 Acme1 1234 Abc Rd Springfield OR 0 blah@gmail.com 1/12/2012
3 Acme2 NULL NULL NULL 1 blah@yahoo.com 4/19/2012
Предположим, что пользователь выбрал строку с идентификатором 1 в качестве строки шаблона, а строки с идентификаторами 2 и 3 должны быть объединены в строку 1, а затем удалены. Любые столбцы нулевых значений в строке с идентификатором 1 должны быть заполнены (если они существуют) самым последним (см. столбец «Дата») ненулевым значением, а ненулевые значения, уже присутствующие в строке с идентификатором 1, должны быть оставлены как есть. Результат этого запроса к приведенным выше данным должен быть именно таким:
Id Name Address City State Active Email Date
1 Acme1 1234 Abc Road Springfield OR 1 blah@yada.com 3/1/2011
Обратите внимание, что значение Active равно 1, а не 0, поскольку строка с идентификатором 3 имеет самую последнюю дату.
П.С. Кроме того, есть ли способ сделать это без явного определения/знания заранее, каковы все имена столбцов? Фактическая таблица, с которой я работаю, имеет массу столбцов, и все время добавляются новые. Есть ли способ найти все имена столбцов в таблице, а затем использовать этот подзапрос или temptable для выполнения задания?