이 쿼리를 만들었고 작동했습니다. 문제는 각 작업 로그에 대한 행을 표시한다는 것입니다. 각 이벤트에 대한 최신 작업 로그만 있으면 됩니다.
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개 제한
저는 HPD:Help Desk, HPD:Worklog 및 HPD:Search-Worklog 양식을 사용해 보았습니다. 또한 CASE 문을 사용하여 각 이벤트의 최신/최대 작업 로그 ID를 표시하려고 시도했지만 성공하지 못했습니다. 나는 명백하고 간단한 것을 놓치고 있다고 확신합니다.
창 기능을 지원하는 최신 버전의 MySQL(또는 그 변형)을 사용한다고 가정할 때, "최신"을 얻는 매우 효율적인 방법은 실제로 "최신"을 결정하는 열을 교체해야 하는
으아아아row_number() over()
。在over子句中使用partition by
来控制什么会触发行编号重置,并使用order by
来控制分区中获得行号1的行。现在,要获取“最新”的需要在worklog表中有一列来实现这个功能 - 我假设有一个时间戳列(worklog_entry_date
存在于该表中(worklog_entry_date
)을 사용하는 것입니다. 행 번호 1을 필터링할 수 있도록 현재 쿼리를 한 수준 중첩합니다. 이는 "최신" 행이 됩니다.참고: 행 번호 매기기가 있는 경우에는
select distinct
를 사용할 필요가 없습니다. 일반적으로 사용하지 마세요. 또한 테이블 별칭을 직접 사용하여 코드를 단순화하세요.