중복 행을 제거하고 최신 작업 로그 항목만 유지
P粉916760429
2023-08-10 17:25:56
<p>이 쿼리를 만들었고 작동했습니다. 문제는 각 작업 로그에 대한 행을 표시한다는 것입니다. 각 이벤트에 대한 최신 작업 로그만 있으면 됩니다. </p>
<pre class="brush:php;toolbar:false;"> DISTINCT 선택
`HPD:헬프 데스크`.`사고 번호` AS Incident_Number,
`HPD:헬프 데스크`.`상태` AS 상태,
`HPD:Help Desk`.`우선순위` AS 우선순위,
`HPD:헬프 데스크`.`할당된 그룹` AS Assigned_Group,
`HPD:Help Desk`.`Assignee` AS 담당자,
`HPD:헬프 데스크`.`제출 날짜` AS Submit_Date,
`HPD:헬프 데스크`.`마지막 수정 날짜` AS Last_Modified_Date,
`HPD:헬프 데스크`.`설명` AS 설명,
`HPD:헬프 데스크`.`제출자` AS 제출자,
`HPD:Search-Worklog`.`작업로그 설명` AS Worklog_Description,
`HPD:Search-Worklog`.`작업 로그 ID` AS Work_Log_ID
에서
`HPD:헬프 데스크`
내부 조인 `HPD:Search-Worklog` on (`HPD:Search-Worklog`.`InstanceId` = `HPD:Help Desk`.`InstanceId`)
어디
(`HPD:헬프 데스크`.`상태` in ('할당됨', '보류 중', '진행 중')
그리고 `HPD:헬프 데스크`.`제출 날짜` >= $__from/1000 및 `HPD:헬프 데스크`.`제출 날짜` <= $__to/1000)
주문
`HPD:헬프 데스크`.`제출 날짜` ASC
20개 제한</pre>
<p>저는 HPD:Help Desk, HPD:Worklog 및 HPD:Search-Worklog 양식을 사용해 보았습니다. 또한 CASE 문을 사용하여 각 이벤트의 최신/최대 작업 로그 ID를 표시하려고 시도했지만 성공하지 못했습니다. 나는 명백하고 간단한 것을 놓치고 있다고 확신합니다. </p>
창 기능을 지원하는 최신 버전의 MySQL(또는 그 변형)을 사용한다고 가정할 때, "최신"을 얻는 매우 효율적인 방법은 실제로 "최신"을 결정하는 열을 교체해야 하는
으아아아row_number() over()
。在over子句中使用partition by
来控制什么会触发行编号重置,并使用order by
来控制分区中获得行号1的行。现在,要获取“最新”的需要在worklog表中有一列来实现这个功能 - 我假设有一个时间戳列(worklog_entry_date
存在于该表中(worklog_entry_date
)을 사용하는 것입니다. 행 번호 1을 필터링할 수 있도록 현재 쿼리를 한 수준 중첩합니다. 이는 "최신" 행이 됩니다.참고: 행 번호 매기기가 있는 경우에는
select distinct
를 사용할 필요가 없습니다. 일반적으로 사용하지 마세요. 또한 테이블 별칭을 직접 사용하여 코드를 단순화하세요.