重複する値を削除する必要があるデータをまとめている SQL のビューがあります。DISTINCT と GROUP BY を使用してみましたが、成功しませんでした。基本的には、ドキュメントのタイプに基づいてプロバイダーに添付される一連のアップロードされたファイルです。署名のさまざまな段階を経るにつれて、ドキュメントの複数のバージョンがアップロードされます。
ドキュメントの新しいフェーズをアップロードするたびに、UploadedDocuments テーブルに新しい行が追加されます。RequiredDocumentsID は同じままですが、UploadedFiles テーブルのファイル名 (およびそのテーブルの ID フィールド) は新しくなります。
通常、この情報は一度に 1 つのプロバイダーで検索されるため、歴史的にはこれは問題ではありませんでした。この場合、ドキュメントの種類ごとに最新のものを取得するだけです。ただし、すべてのプロバイダーを一度に表示する必要がある作業中の新しいページがありますが、各プロバイダーを一度だけリストし、最新のファイル名/パス列のみをリストする必要があります。
以下は、私が現在持っているビューです。前述のように、最初の値を「DISTINCT dbo.ReqDocuments.ID」として配置し、GroupBy を実行しようとしました。どちらの論文も重複を排除できませんでした。組み込み選択または OUTER 適用を考えていましたが、私の tSQL スキルはまだそのレベルに達していません。
SELECT dbo.UploadedFiles.FileName, dbo.UploadedFiles.FilePath,
dbo.ReqDocuments.ProviderID, dbo.Providers.CompanyName,
dbo.ReqDocuments.ID AS RequiredDocumentID, dbo.UploadedFiles.aDate,
dbo.UploadedFiles.aUser
FROM dbo.Providers
INNER JOIN dbo.ReqDocuments ON dbo.Providers.ID = dbo.ReqDocuments.ProviderID
INNER JOIN dbo.UploadedFiles ON dbo.ReqDocuments.ID = dbo.UploadedFiles.ReqDocumentsID
WHERE (dbo.ReqDocuments.DocumentID = 50)