В нашем агентстве имеется более 200 пожарных машин и 50 машин скорой помощи. Каждое из этих устройств имеет GPS на борту, который регистрирует данные в базе данных SQL Server 2012. Каждый месяц это миллионы записей данных. Каждый месяц меняется имя таблицы. Например; В этом месяце (16 декабря 2015 года) имя таблицы составляет GPS.dbo.History201512
, и оно будет хранить данные gps только в декабре месяце 2015 года. В следующем месяце (январь 2016 года) имя должно быть GPS.dbo.History201601
, и оно будет содержать данные за январь 2016 года Таким образом, шаблон равен GPS.dbo.HistoryYYYYMM
. Простой запрос будет:Запросить таблицу, которая меняет название на основе года и месяца
SELECT DateTimeStamp, Longitude, Latitude, Apparatus
FROM GPS.dbo.History201512
WHERE Apparatus = 'Ambulance32'
Так что это движущаяся мишень. Таблица изменяет имена на предсказуемой структуре. Что я могу сделать, чтобы запросить этот запрос для текущего месяца. Если сегодняшняя дата - 4 июля 2016 года, тогда запросите таблицу GPS.dbo.History201607
. Если сегодняшняя дата - 9 ноября 2017 года, тогда запросите таблицу GPS.dbo.History201711
.
Как запрограммировать запрос таким образом, чтобы он забирал дату системного календаря и затем запрашивал соответствующую ежемесячную таблицу?
Мне нужно знать, почему одна таблица не использовалась здесь. Эта колонка в одной таблице может содержать эту информацию. –
См. Http://stackoverflow.com/questions/20678725/how-to-set-table-name-in-dynamic-sql-query –
Почему бы не использовать только одну таблицу и индекс в дате или секционированную таблицу? –