SQL — изменение статуса истории в записях обращений

#sql #oracle

#sql #Oracle

Вопрос:

Я пытаюсь создать запись об изменениях статуса в обращениях из нашей базы данных Oracle. Сохраненные в истории записи хранятся в отдельной таблице, а «текущие значения» в обращении — в главной таблице.

Таблица с историей настроена так, что вы получаете, какое поле изменено, старое значение, новое значение и даты.

Я хотел бы, чтобы данные были настроены так, чтобы я мог иметь все статусы от первого до последнего в отдельных строках. В настоящее время мое решение заключается в следующем:

 SELECT 
ct.CASENUMBER
, ht.FIELD 
, ht.OLDVALUE AS Status
, ct.CREATEDDATE AS createdtime
, LAG(ht.CREATEDDATE) OVER(PARTITION BY ct.CASENUMBER ORDER BY ht.CREATEDDATE ) AS Previous_time
, ht.CREATEDDATE AS modifiedtime
, ht.NEWVALUE AS Next_status
, ct.STATUS AS Last_status
, DENSE_RANK () OVER (PARTITION BY ct.CASENUMBER ORDER BY ht.CREATEDDATE ) AS DRANK
FROM case_table ct
JOIN history_table ht
ON ct.ID = ht.CASEID 
WHERE ht.FIELD = 'Status'
 

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

РЕДАКТИРОВАТЬ: как это выглядит на данный момент: образец Excel из нескольких записей

Я бы хотел, чтобы идентификатор ОБРАЩЕНИЯ, СТАТУС, ВРЕМЕННАЯ МЕТКА, СЛЕДУЮЩИЙ СТАТУС включали последний статус в виде отдельной строки с нулевым значением для следующего статуса (или аналогично) Добавлено в таблицу HTML с указанием того, как я хотел бы, чтобы она выглядела там, где последний известный статус имеет отдельную строку без известного следующего статуса.

Примеры данных:

 INSERT ALL
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-06','Status','In Progress','01.02.2021  11:37:09','01.02.2021  12:14:15','01.02.2021  12:17:07','Solved','Solved','2')
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-06','Status','New','01.02.2021  11:37:09','NULL','01.02.2021  12:14:15','In Progress','Solved','1')
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-05','Status','In Progress','01.02.2021  11:36:52','01.02.2021  13:43:24','01.02.2021  13:46:25','Solved','Solved','3')
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-05','Status','Transferred','01.02.2021  11:36:52','01.02.2021  12:08:10','01.02.2021  13:43:24','In Progress','Solved','2')
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-05','Status','New','01.02.2021  11:36:52','NULL','01.02.2021  12:08:10','Transferred','Solved','1')
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-80','Status','New','01.02.2021  11:32:32','NULL','01.02.2021  11:42:38','Solved','Solved','1')
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-79','Status','New','01.02.2021  11:32:31','NULL','01.02.2021  11:34:35','Solved','Solved','1')
INTO Table1 (Casenumber, Field, Status, Createdtime, Previous_time, Modifiedtime, Next_status, Last_status, drank) 
VALUES ('Case-78','Status','New','01.02.2021  11:32:20','NULL','01.02.2021  11:42:58','In Progress','In Progress','1')
 
 table {
font-size: 12px;
margin-left:auto;
margin-right:auto;
border-collapse: collapse;
}
table th {
font-size: 14px;
font-weight: bold;
border: 1px solid #999999;
padding: 0px 5px;
}
table td {
border: 1px solid #999999;
padding: 5px 5px;
} 
 <table border="1">
<tr><th>CASENUMBER</th><th>FIELD</th><th>STATUS</th><th>CREATEDTIME</th><th>PREVIOUS_TIME</th><th>MODIFIEDTIME</th><th>NEXT_STATUS</th><th>LAST_STATUS</th><th>DRANK</th></tr>
<tr><td>Case-06'</td><td>Status'</td><td>Solved</td><td>01.02.2021 11:37:09'</td><td>01.02.2021 12:17:07'</td><td>NULL</td><td>NULL</td><td>Solved'</td><td>3'</td></tr>
<tr><td>Case-06'</td><td>Status'</td><td>In Progress'</td><td>01.02.2021 11:37:09'</td><td>01.02.2021 12:14:15'</td><td>01.02.2021 12:17:07'</td><td>Solved'</td><td>Solved'</td><td>2'</td></tr>
<tr><td>Case-06'</td><td>Status'</td><td>New'</td><td>01.02.2021 11:37:09'</td><td>NULL'</td><td>01.02.2021 12:14:15'</td><td>In Progress'</td><td>Solved'</td><td>1'</td></tr>
<tr><td>Case-05'</td><td>Status'</td><td>Solved</td><td>01.02.2021 11:36:52'</td><td>01.02.2021 13:46:25'</td><td>NULL</td><td>NULL</td><td>Solved'</td><td>4'</td></tr>
<tr><td>Case-05'</td><td>Status'</td><td>In Progress'</td><td>01.02.2021 11:36:52'</td><td>01.02.2021 13:43:24'</td><td>01.02.2021 13:46:25'</td><td>Solved'</td><td>Solved'</td><td>3'</td></tr>
<tr><td>Case-05'</td><td>Status'</td><td>Transferred'</td><td>01.02.2021 11:36:52'</td><td>01.02.2021 12:08:10'</td><td>01.02.2021 13:43:24'</td><td>In Progress'</td><td>Solved'</td><td>2'</td></tr>
<tr><td>Case-05'</td><td>Status'</td><td>New'</td><td>01.02.2021 11:36:52'</td><td>NULL'</td><td>01.02.2021 12:08:10'</td><td>Transferred'</td><td>Solved'</td><td>1'</td></tr>
<tr><td>Case-80'</td><td>Status'</td><td>Solved</td><td>01.02.2021 11:32:32'</td><td>01.02.2021 11:42:38'</td><td>NULL</td><td>NULL</td><td>Solved'</td><td>2'</td></tr>
<tr><td>Case-80'</td><td>Status'</td><td>New'</td><td>01.02.2021 11:32:32'</td><td>NULL'</td><td>01.02.2021 11:42:38'</td><td>Solved'</td><td>Solved'</td><td>1'</td></tr>
<tr><td>Case-79'</td><td>Status'</td><td>Solved</td><td>01.02.2021 11:32:31'</td><td>01.02.2021 11:34:35'</td><td>NULL</td><td>NULL</td><td>Solved'</td><td>2'</td></tr>
<tr><td>Case-79'</td><td>Status'</td><td>New'</td><td>01.02.2021 11:32:31'</td><td>NULL'</td><td>01.02.2021 11:34:35'</td><td>Solved'</td><td>Solved'</td><td>1'</td></tr>
<tr><td>Case-78'</td><td>Status'</td><td>In Progress'</td><td>01.02.2021 11:32:20'</td><td>01.02.2021 11:42:58'</td><td>NULL</td><td>NULL</td><td>In progress'</td><td>2'</td></tr>
<tr><td>Case-78'</td><td>Status'</td><td>New'</td><td>01.02.2021 11:32:20'</td><td>NULL'</td><td>01.02.2021 11:42:58'</td><td>In Progress'</td><td>In progress'</td><td>1'</td></tr>
</table> 

Комментарии:

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

2. Я добавил пример некоторых обращений и то, как они выглядят с моей текущей настройкой.

3. Не могли бы вы преобразовать это изображение в инструкцию insert, пожалуйста? Когда я копирую это изображение в свой инструмент разработки …. ничего не происходит ;). Также было бы полезно, если бы вы привели печатный пример того, какой результат вы ожидаете

4. Добавлен оператор insert с данными таблицы примеров и таблицей HTML с тем, как это потенциально может выглядеть.