SQL - 记录案例记录中的状态更改

时间:2021-02-03 13:20:36

标签: 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 sample of a couple of records

我想要一个案例 ID、状态、时间戳、下一个状态 包括最后一个状态作为一个单独的行,下一个状态为空值(或类似的) 在 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>

0 个答案:

没有答案
相关问题