このクエリを作成しましたが、機能します。問題は、ジョブログごとに行が表示されることです。イベントごとの最新の作業ログが必要なだけです。
SELECT DISTINCT `HPD:ヘルプ デスク`.`インシデント番号` AS Incident_Number、 `HPD:ヘルプデスク`.`ステータス` AS ステータス、 `HPD:ヘルプ デスク`.`優先度` AS 優先度、 `HPD:ヘルプ デスク`.`割り当てられたグループ` AS Assigned_Group、 `HPD:ヘルプ デスク`.`担当者` AS 担当者、 `HPD:ヘルプ デスク`.`提出日` AS Submit_Date, `HPD:ヘルプ デスク`.`最終更新日` AS Last_Modified_Date, `HPD:ヘルプデスク`.`説明` AS 説明、 `HPD:ヘルプ デスク`.`提出者` AS 提出者、 `HPD:Search-Worklog`.`Worklog の説明` AS Worklog_Description、 `HPD:Search-Worklog`.`Work Log ID` AS Work_Log_ID から 「HPD:ヘルプデスク」 INNER JOIN `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 (またはそのバリアント) を使用していると仮定すると、「最新」を取得する非常に効率的な方法は、
select uniquerow_number() over()
を使用することです。 over 句でpartition by
を使用して行番号リセットのトリガーを制御し、order by
を使用してパーティション内のどの行に行番号 1 を取得するかを制御します。ここで、「最新」を取得するには、これを行うためのワークログ テーブル内の列が必要です。テーブル内にタイムスタンプ列 (worklog_entry_date
) が存在すると仮定しています。実際にその列を置き換える必要があります。 「最新」を決定します)。現在のクエリを 1 レベルネストして、行番号 1 でフィルタリングできるようにします。これらが「最新」行になります:リーリー
注: 行番号が存在する場合は、を使用する必要はありません。通常は使用しないようにしてください。また、テーブルのエイリアスを自分で使用して、コードを簡素化します。