有一个简单的表格,可以跟踪报告的一组“批准者”。还可以跟踪何时“创建”报告以及何时“提交”报告。创建和提交报告之间的时间跨度应该是批准者ID提交给单个报告的时间,但是如果他们的批准者ID显示在我要标记的另一个报告的相同时间范围内。
示例(一个表,“报告”):
"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一起玩过但无济于事。任何帮助表示赞赏!
谢谢
答案 0 :(得分:0)
UNTESTED:
SELECT R1.Created, R1.Submitted, R1.ApproverID, count(*)
FROM reports R1
INNER JOIN reports R2
on R1.Created between R2.Created and R2.Submitted --ON
OR R2.created between R2.Created and R2.submitted --OR
GROUP BY R1.Created, R1.Submitted, R1.ApproverID
答案 1 :(得分: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
这假设您有一个名为approvalID的主键。