Мне нужно дублировать записи из данных недельного уровня и отталкивать их назад, чтобы они заполнили данные на прошлой неделе. Поэтому я получаю строку на 1/6, которая является субботой, а затем заполняю все столбцы, чтобы иметь те же данные, кроме даты до 1/1 (воскресенье).Дублирующие записи для диапазона дат
Так что мой источник дата, информация 1/6, цель
должен быть 1/7, б | 1/6, a | 1/5, a | 1/4, a | 1/3, a | 1/2, a | 1/1, a
** Извините за формат, не удалось его корректно отобразить.
До сих пор лучшие способы я думал сделать это либо с помощью нескольких профсоюзных Alls
SELECT date, info FROM test
UNION ALL
SELECT date - 1, info FROM test
UNION ALL
SELECT date - 2, info FROM test
ЭСТ.
или сделать управляемый декартовой присоединиться
SELECT tmp_date AS date, info FROM test AS test
INNER JOIN date_temp_table AS dt
ON dt.tmp_date <= test.date
AND dt.tmp_date > test.date - 7
Теперь оба вышеуказанных методов работы, однако они оба очень неэффективно и почти убить мою базу данных (Teradata) Так им открыты для любых идей о том, как улучшить это.
Поскольку 'date' является зарезервированным словом, Я предполагаю, что это всего лишь пример, правильно? – BellevueBob