В моей базе данных есть данные, которые выглядят следующим образом:
Date (DateTime) Type (varchar) Data (varchar)
2010/12/22 6:00 Geofence Area 1,1
2010/12/22 7:00 Geofence Area 1,0
2010/12/22 7:30 Geofence Area 2,1
2010/12/22 7:45 Geofence Area 2,0
2010/12/22 8:00 Geofence Area 3,1
Как видно, для типа данных Geofence данные разделяются запятой, причем первая половина содержит имягеозона и вторая половина, указывающие, вошла ли точка в геозону или нет.
Я пытаюсь получить список всех последних записей типа геозоны для каждой области.Мой идеальный вывод будет выглядеть так:
Date Type Data
2010/12/22 7:00 Geofence Area 1,0
2010/12/22 7:45 Geofence Area 2,0
2010/12/22 8:00 Geofence Area 3,1
Мой гипотетический оператор SQL будет выглядеть следующим образом
SELECT MAX(Date) AS LatestDate, Data
FROM MyTable
WHERE Type = 'Geofence'
GROUP BY FirstHalfOf(Data)
Возможно ли сделать это, сохранив такую же структуру таблицы?
Я использую MS SQL Server 2008
Спасибо
PS В соответствии с запросом приведен код SQL для создания таблицы и заполнения ее примерами данных:
CREATE TABLE TestData (
id int PRIMARY KEY IDENTITY,
Date datetime NOT NULL,
Type varchar(50) NOT NULL,
Data varchar(max) NULL)
INSERT INTO TestData (Date, Type, Data)
VALUES('2010/12/22 6:00', 'Geofence', 'Area 1,1')
INSERT INTO TestData (Date, Type, Data)
VALUES('2010/12/22 7:00', 'Geofence', 'Area 1,0')
INSERT INTO TestData (Date, Type, Data)
VALUES('2010/12/22 7:30', 'Geofence', 'Area 2,1')
INSERT INTO TestData (Date, Type, Data)
VALUES('2010/12/22 7:45', 'Geofence', 'Area 2,0')
INSERT INTO TestData (Date, Type, Data)
VALUES('2010/12/22 8:00', 'Geofence', 'Area 3,1')