Создание таблицы учета вызовов с помощью операторов ROW_NUMBER () и CASE - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь создать несколько отчетов из необработанных данных в телефонной системе. Эта система имеет входящий вызов из нескольких мест, на которые может или не может быть дан ответ, и данные могут также иметь несколько строк между запросом вызова, ответом и зависанием. В конечном счете, я хотел бы строку с временем запроса на вызов, началом, окончанием (упрощенно ниже) для каждого вызова. Источник и пункт назначения также будут включены, но были исключены из упрощенного запроса

Я пытался создать номера строк и различные версии или ниже, в надежде создать одну строку, но при изменении номеров строк в соединении у меня возникают проблемы с преодолением. [END] .RowNumber = (START.RowNumber-1)

WITH CallRowNum AS
(
    SELECT (CASE WHEN Text LIKE 'Call request from%' THEN (LogTime) 
                 ELSE NULL 
            END) AS REQUEST_TIME,
           (CASE WHEN Text LIKE 'Start conversation%' THEN (LogTime) 
                 ELSE NULL 
            END) AS CALL_START,
           (CASE WHEN Text LIKE 'Call deleted%'  THEN (LogTime) 
                 ELSE NULL 
            END) AS CallEnd,
           ROW_NUMBER() OVER (ORDER BY (REQUEST_TIME,CALL_START, CALL_END)) AS RowNumber
    FROM [LogEntry] LE
)
  SELECT *
  FROM (Select * 
        FROM CallRowNum 
        WHERE [CALL START] IS NOT NULL) START
        JOIN (SELECT * 
              FROM CallRowNum 
              WHERE [CallEnd] IS NOT NULL)  [END] 
          ON [END].RowNumber = (START.RowNumber-1)
  WHERE (START.[CALL START] IS NOT NULL  
     OR START.[CALL_REQUEST] IS NOT NULL 
     OR START.CallEnd IS NOT NULL)

Пока я не могу получить соединение, чтобы иметь правильный запрос вызова, время начала и окончания. Выше приведено только для связывания начальной и конечной части

РЕДАКТИРОВАТЬ - ОБРАЗЕЦ ДАННЫХ:

Sample Data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...