Как получить несколько записей из одного столбца в Excel, используя Sql Query - PullRequest
0 голосов
/ 17 октября 2019

У меня есть лист Excel, подобный следующему:

         ID           |    Service    |   System   |        Timestamp       |
----------------------+---------------+------------+------------------------|        
8148763783013217075-  | Entry         | ZentPeople | 2019-10-14 18:44:38,143|
8148763783013217075-  | ZentRequest   | ZentPeople | 2019-10-14 18:44:38,726|
8148763783013217075-  | BlogRequest   | ZentPeople | 2019-10-14 18:44:38,726|
8148763783013217075-  | Blogresponse  | ZentPeople | 2019-10-14 18:44:39,017|
8148763783013217075-  | ZentResponse  | ZentPeople | 2019-10-14 18:44:39,019|
8148763783013217075-  | End           | ZentPeople | 2019-10-14 18:44:39,020|
-----------------------------------------------------------------------------

На листе идентификатор и система совпадают, но метки обслуживания и времени различны. Мне нужен один SQL-запрос, который мог бы вернуть один идентификатор и систему, но все метки времени и службы в одной строке следующим образом:

8148763783013217075-  | ZentPeople    | Entry | 2019-10-14 18:44:38,143| ZentRequest |  2019-10-14 18:44:38,726 | BlogRequest| 2019-10-14 18:44:38,726 |Blogresponse | 2019-10-14 18:44:39,017 | ZentResponse | 2019-10-14 18:44:39,019 | End |2019-10-14 18:44:39,020

Я пытался и достиг вышеупомянутого только с VBA, а также с 2 SQLзапрос. Но это увеличивает время вычислений. Поскольку мне нужно обработать миллионы записей, один запрос может сократить время вдвое. Поэтому мне нужен один запрос для его выполнения.

1 Ответ

0 голосов
/ 17 октября 2019

нет SQL, только VBA

Sub CopyC()
Dim j As Long
Dim i As Long
Dim c As Long
    j = 1
    For i = 1 To Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
        c = 3
        Do While Sheet1.Cells(i, 1) = Sheet1.Cells(i + 1, 1)
            If c = 3 Then
                Sheet2.Cells(j, 1) = Sheet1.Cells(i, 1)
                Sheet2.Cells(j, 2) = Sheet1.Cells(i, 3)
            End If
            Sheet2.Cells(j, c) = Sheet1.Cells(i, 2)
            Sheet2.Cells(j, c + 1) = Sheet1.Cells(i, 4)
            c = c + 2
            i = i + 1
        Loop
        Sheet2.Cells(j, c) = Sheet1.Cells(i, 2)
        Sheet2.Cells(j, c + 1) = Sheet1.Cells(i, 4)
        j = j + 1
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...