重複した行を削除し、最新の作業ログ エントリのみを保持します。
P粉916760429
2023-08-10 17:25:56
<p>このクエリを作成しましたが、機能します。問題は、ジョブログごとに行が表示されることです。イベントごとの最新の作業ログが必要なだけです。 </p>
<pre class="brush:php;toolbar:false;">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</pre>
<p>HPD:Help Desk、HPD:Worklog、および HPD:Search-Worklog フォームを試しました。また、CASE ステートメントを使用して、各イベントの最新/最大のワークログ ID を表示しようとしましたが、成功しませんでした。明らかな/単純な何かが欠けていると確信しています。 </p>
ウィンドウ関数をサポートする最新バージョンの MySQL (またはそのバリアント) を使用していると仮定すると、「最新」を取得する非常に効率的な方法は、
select uniquerow_number() over()
を使用することです。 over 句でpartition by
を使用して行番号リセットのトリガーを制御し、order by
を使用してパーティション内のどの行に行番号 1 を取得するかを制御します。ここで、「最新」を取得するには、これを行うためのワークログ テーブル内の列が必要です。テーブル内にタイムスタンプ列 (worklog_entry_date
) が存在すると仮定しています。実際にその列を置き換える必要があります。 「最新」を決定します)。現在のクエリを 1 レベルネストして、行番号 1 でフィルタリングできるようにします。これらが「最新」行になります:リーリー
注: 行番号が存在する場合は、を使用する必要はありません。通常は使用しないようにしてください。また、テーブルのエイリアスを自分で使用して、コードを簡素化します。