Это решение довольно сложное, но может помочь. К сожалению, мне не хватает всего кода, но вот концептуальный подход для начинающих:
Сначала вы выбираете временную таблицу, в которую входит row_counter. Примерно так:
(SELECT value, date_loaded, row_number() over (partition by date_loaded) as rowNum FROM yourTable) as tempTable1
Затем используйте какой-то цикл while, который выполняет итерацию в зависимости от количества строк (tempTableCount), которое имеется в таблице temp (tempTable1). Этот цикл будет перебирать эту временную таблицу по одной строке за раз и вставлять строку в новую временную таблицу. После каждой вставки вы отслеживаете предыдущее вставленное значение и увеличиваете счетчик строк. Если значение изменяется, тогда вставьте, иначе продолжайте в цикле.
Мой синтаксис, вероятно, очень далек (извините, не на компьютере с sql на нем), но концептуально:
WHILE loopRowCount <= tempTableCount
BEGIN
IF(@previousValue <> (SELECT value from tempTable WHERE rowNum = loopRowCount))
BEGIN
INSERT INTO tempTable2
(value, date_loaded)
(SELECT value, date_loaded FROM tempTable WHERE rowNum = loopRowCount)
END
set @previousValue = (SELECT value FROM tempTable WHERE rowNum = loopRowCount)
loopRowCount = loopRowCount + 1
END
Ваша таблица tempTable2 будет содержать желаемый результат, при условии, что вы переживете синтаксическую ошибку. Я постараюсь почистить его утром, но это лучшее, что я получил за вечер! Наслаждайтесь! XD