Запрос последовательных данных с датой / временем и текстовыми значениями в одном столбце - PullRequest
0 голосов
/ 25 мая 2019

Мои данные представляют собой одно поле и включают дату, время, час, но также содержат данные, которые мне нужны.

Уже ключевое слово запроса 2, но данные все еще большие и слишком много пустого второго ключевого слова

SELECT Field1
FROM TABLE1
WHERE Field1 Like '*EVENT_1' Or
      Field1 Like '*DATETIME'

Я ожидаю, что результат будет:

Заранее спасибо

1 Ответ

0 голосов
/ 26 мая 2019

Начните с импорта данных журнала в Access. При этом попросите Access создать свой собственный первичный ключ, который будет называться AutoNumber:

[impLogData]

ID  Field1            
--  ------------------
 1    May/01/2019 7:00
 2  EVENT_0           
 3  EVENT_1 - val:10  
 4  EVENT_2           
 5  EVENT_3           
 6  EVENT_4           
 7  EVENT_5           
 8  EVENT_6           
 9    May/01/2019 8:00
10  EVENT_2           
11  EVENT_3           
12  EVENT_12          
13  EVENT_13          
14  EVENT_14          
15    May/01/2019 9:00
16  EVENT_0           
17  EVENT_1 - val:15  
18  EVENT_2           

Создать таблицу [tblLogTime] как

ID - длинное целое, первичный ключ
logTime - дата / время

и заполните его

INSERT INTO tblLogTime ( ID, logTime )
SELECT impLogData.ID, CDate([Field1]) AS Expr1
FROM impLogData
WHERE (((IsDate([Field1]))=True));

производства

[tblLogTime]

ID  logTime            
--  -------------------
 1  2019-05-01 07:00:00
 9  2019-05-01 08:00:00
15  2019-05-01 09:00:00

Затем создайте таблицу [tblLogEvent] как

logTime - Дата / Время
logEvent - Text (255)

и заполните его

INSERT INTO tblLogEvent ( logTime, logEvent )
SELECT DMax("logTime","tblLogTime","ID < " & [impLogData].[ID]) AS Expr1, impLogData.Field1
FROM impLogData LEFT JOIN tblLogTime ON impLogData.ID = tblLogTime.ID
WHERE (((tblLogTime.ID) Is Null));

производства

[tblLogEvent]

logTime              logEvent        
-------------------  ----------------
2019-05-01 07:00:00  EVENT_0         
2019-05-01 07:00:00  EVENT_1 - val:10
2019-05-01 07:00:00  EVENT_2         
2019-05-01 07:00:00  EVENT_3         
2019-05-01 07:00:00  EVENT_4         
2019-05-01 07:00:00  EVENT_5         
2019-05-01 07:00:00  EVENT_6         
2019-05-01 08:00:00  EVENT_2         
2019-05-01 08:00:00  EVENT_3         
2019-05-01 08:00:00  EVENT_12        
2019-05-01 08:00:00  EVENT_13        
2019-05-01 08:00:00  EVENT_14        
2019-05-01 09:00:00  EVENT_0         
2019-05-01 09:00:00  EVENT_1 - val:15
2019-05-01 09:00:00  EVENT_2         

Затем вы можете выбрать строки EVENT_1, используя

SELECT tblLogEvent.logTime, tblLogEvent.logEvent
FROM tblLogEvent
WHERE (((tblLogEvent.logEvent) Like "EVENT_1 *"))
ORDER BY tblLogEvent.logTime;

производства

logTime              logEvent        
-------------------  ----------------
2019-05-01 07:00:00  EVENT_1 - val:10
2019-05-01 09:00:00  EVENT_1 - val:15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...