Создание таблицы «интервалы» с 12 строками, содержащими одно поле «iinterval», со значениями от 1 до 12.
iinterval
1
2
3
4
5
6
7
8
9
10
11
12
Затем можно выполнить перекрестное соединение между таблицей интервалов.и те строки T1, где интервал равен нулю.(Я переименовал поля T1 в поле «Дата», «Час» и «Интервал», поскольку все они являются зарезервированными словами.)
SELECT T1.ID, T1.idate, T1.ihour, intervals.iinterval
FROM T1, intervals
WHERE T1.iinterval=0;
Поскольку условие JOIN не указано, каждая строка T1 (с нулевым интервалом) будет объединена скаждый интервал строки.
ID idate ihour iinterval
1 1/1/2011 1 1
1 1/1/2011 1 2
1 1/1/2011 1 3
1 1/1/2011 1 4
1 1/1/2011 1 5
1 1/1/2011 1 6
1 1/1/2011 1 7
1 1/1/2011 1 8
1 1/1/2011 1 9
1 1/1/2011 1 10
1 1/1/2011 1 11
1 1/1/2011 1 12
Если он получает то, что вы хотели для строк, где интервал равен нулю, вы можете использовать его в запросе UNION, чтобы добавить эти строки в строки T1, где интервал равен не ноль.
SELECT a.ID, a.idate, a.ihour, a.iinterval
FROM T1 AS a
WHERE a.iinterval<>0
UNION
SELECT T1.ID, T1.idate, T1.ihour, intervals.iinterval
FROM T1, intervals
WHERE T1.iinterval=0;
Я надеюсь, что это укажет вам на что-то полезное, но сомневаюсь, что это именно то, что вы в конечном итоге хотите.Я зарезервирован из-за этого условия: « Обратите внимание, что есть перекрытие интервалов и интервал с отметкой 0 ».Я не знаю, что должно произойти в ответ на эти совпадения.