1

人々が次の問題を効率的に解決する方法に興味があります。

レポートの「承認者」のグループを追跡する単純なテーブルを用意します。また、レポートがいつ「作成」され、いつ「提出」されたかを追跡します。レポートの作成と送信の間の期間は、承認者 ID が単一のレポートにコミットされたときでなければなりませんが、承認者 ID が別のレポートの同じ期間内に表示される場合は、フラグを立てたいと思います。

例 (1 つのテーブル、「レポート」):

"Created"                 "Submitted"                "ApproverID"
4/20/2012 5:01:32 AM          4/20/2012 5:30:32 AM          10
4/20/2012 5:08:32 AM          4/20/2012 5:45:32 AM          10
4/20/2012 5:01:32 AM          4/19/2012 5:38:16 PM          15 

この例では、重複する行を SELECT して返したいと思います。

 "Created"                 "Submitted"                "ApproverID"     "Duplicate_ID"
4/20/2012 5:01:32 AM          4/20/2012 5:30:32 AM          10            1
4/20/2012 5:08:32 AM          4/20/2012 5:45:32 AM          10            1

...そして、新しい列「Duplicate」に一意の値を追加して、SELECT DISTINCT Duplicate_ID を実行できる特定のオーバーラップ ヒットに対してレポートすることもできます。

私はBETWEENで遊んでみましたが、役に立ちませんでした。どんな助けでも大歓迎です!

ありがとうございました

4

2 に答える 2

0

とにかく、これは競合するレポートのリストを取得します:

SELECT r1.approvalID, r2.approvalID
FROM reports r1
JOIN reports r2
  ON r2.approverID = r1.approverID
  AND r2.created < r1.created
  AND r2.submitted >= r1.created
  AND r2.submitted < r1.submitted

これは、approvementID という名前の主キーがあることを前提としています。

于 2012-05-07T22:40:37.003 に答える