ドキュメントが多くのバージョンを持つ可能性があるドキュメント管理データベースにクエリを実行しています。したがって、以下のクエリは、バージョン管理のために同じドキュメントを複数回返します。
SELECT distinct d.DOCNUM, d.DOCNAME,P.FolderName
FROM DOCUMENT as d with (nolock)
inner join Project_T as pt on d.docnum=pt.item_id
inner join Projects p on pt.prj_id=p.prj_id
where d.type = 'Personal' and d.owner like '%67360'
結果:
DOCNUM | DOCNAME | FOLDERNAME |
-----------+----------+---------------+
123 Article Jonathan
123 Article part1 Jonathan
256 Meeting Notes Jonathan
5697 Memo Jonathan
理想的には、docnum 123 は 1 回だけ返す必要があります。
各ドキュメントのバージョンを保持するテーブルに参加し、最新バージョンを選択している(MAX(h.version)
ため、クエリは行ごとに一意のドキュメント番号を返す必要があります。
SELECT distinct d.DOCNUM, h.version, d.DOCNAME,P.FolderName
FROM DOCUMENT as d with (nolock)
inner join DOCHISTORY as h on h.DOCNUM = d.docnum
inner join Project_T as pt on d.docnum=pt.item_id
inner join Projects p on pt.prj_id=p.prj_id
where d.type = 'Personal' and d.owner like '%67360'
and d.SECURITY = 'P'
AND h.VERSION = (SELECT MAX(x.version) FROM DOCHISTORY as X
where x.docnum = d.DOCNUM)
ただし、今回は最新バージョンを取得しますが、docname がわずかに異なる場合、同じ docnum が複数回返されます。以下の docnum 123 を参照してください。
DOCNUM | Version | DOCNAME | FOLDERNAME |
-----------+--------------+-------------+------------+
123 9 Article Jonathan
123 9 Article part1 Jonathan
256 1 Meeting Notes Jonathan
5697 21 Memo Jonathan
レポートに docname 列を表示する必要があります。これを解決する方法はありますか?