У меня есть SQLAnywhere стол, как это:SQL Накопительный последний непустой столбец значений
id int not null,
inserted datetime not null,
modified datetime not null,
data1 varchar(20) null
data2 varchar(20) null
Разработчик не ставил уникальный индекс по идентификатору, и теперь есть куча строк с тем же id, но разные значения для данных1 и data2 по всем строкам, включая некоторые нули. Мне нужно исправить это, свернув все строки с одним и тем же идентификатором в отдельные строки в новой таблице, используя самое раннее вложенное время, последнее измененное время и последнее (по времени изменения) , не равное нулю значения данных1 и data2 (если все строки для этого идентификатора не имеют значения null, и в этом случае значение свернутой строки будет равно null). Я не могу использовать последнюю строку; Мне нужно последнее ненулевое значение для каждого отдельного столбца.
Так три ряда, как это:
1, '2016-01-01', '2016-01-02', 'first', null
1, '2016-01-05', '2016-01-07', null, 'second'
1, '2016-01-10', '2016-01-12', 'third', null
... катался до:
1, '2016-01-01', 2016-01-12', 'third', 'second'
Я смотрел, не равностепенной Самосоединения и функции оконная, но я не могут заставить их свернуть это последнее ненулевое значение для отдельных столбцов. Есть ли классный SQL-способ сделать это в одном запросе, или я, yikes, написав для него Java-программу?
Благодаря
Отлично! Спасибо Джереми. – alacrity