Я работаю над сценарием для анализа некоторых данных, содержащихся в тысячах таблиц в базе данных SQL Server 2008.
Для простоты таблицы можно разбить на группы по 4-8 полусвязанных таблиц. Под полусвязанными я подразумеваю, что они представляют собой коллекции данных для одного и того же элемента, но не имеют фактического отношения SQL. Каждая таблица состоит из отметки даты и времени (тип данных datetime2
), значения (может быть bit
, int
или float
в зависимости от конкретного элемента) и некоторых других столбцов, которые в настоящее время не представляют интереса. Отметка даты и времени устанавливается каждые 15 минут (в четверть часа) в течение нескольких секунд; однако не все данные записываются точно в одно и то же время ...
Например:
ТАБЛИЦА 1:
TIMESTAMP VALUE
2014-11-27 07:15:00.390 1
2014-11-27 07:30:00.390 0
2014-11-27 07:45:00.373 0
2014-11-27 08:00:00.327 0
ТАБЛИЦА 2:
TIMESTAMP VALUE
2014-11-19 08:00:07.880 0
2014-11-19 08:15:06.867 0.0979999974370003
2014-11-19 08:30:08.593 0.0979999974370003
2014-11-19 08:45:07.397 0.0979999974370003
ТАБЛИЦА 3
TIMESTAMP VALUE
2014-11-27 07:15:00.390 0
2014-11-27 07:30:00.390 0
2014-11-27 07:45:00.373 1
2014-11-27 08:00:00.327 1
Как видите, не все таблицы начинаются с одного и того же квартального TIMESTAMP
. По сути, мне нужен запрос, который будет возвращать ЗНАЧЕНИЕ для каждой из 3 таблиц для каждого 15-минутного интервала, начиная с самого раннего TIMESTAMP
из 3 таблиц. Для приведенного примера я бы хотел начать в 2014-11-27 07:15 (не заботьтесь о секундах ... таким образом, необходимо разрешить метку времени быть + - 1 минуту или около того). Возврат NULL для значения, когда нет записи для конкретного TIMESTAMP, нормально. Итак, запрос для приведенного мной примера вернет что-то вроде:
TIMESTAMP VALUE1 VALUE2 VALUE3
2014-11-27 07:15 1 NULL 0
2014-11-27 07:30 0 NULL 0
2014-11-27 07:45 0 NULL 1
2014-11-27 08:00 0 NULL 1
...
2014-11-19 08:00 0 0 1
2014-11-19 08:15 0 0.0979999974370003 0
2014-11-19 08:30 0 0.0979999974370003 0
2014-11-19 08:45 0 0.0979999974370003 0
Я надеюсь это имеет смысл. Любая помощь / указатели / рекомендации будут оценены.