Попытка объединить строки в одну строку с определенными условиями

Учитывая 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 для выполнения задания?

5
задан noahC 19 April 2012 в 22:53
поделиться