我们说我有为用户创建的每个条目创建的记录。我们会称这些文件为准。他们有一个 CreatedWhen 列。
我们还说明可以更新文档以更改其时间戳。一个名为 UpdatedOn 的列。
UpdatedOn 列的初始时间戳与创建新文档的CreatedOn相同,除非他们在退出前保存它。
现在,有人想知道在创建新文档前2小时更新了哪些文档。
这是我的尝试,我无法弄清楚它为什么不起作用。
编辑:我回来的时间不正确。
SELECT
CASE WHEN (d2.UpdatedOn IS NOT NULL)
THEN ROW_NUMBER() OVER (partition by d2.DocumentID, d2.DocumentName, d2.CreatedWhen --sequence grouping
order by d2.UpdatedOn desc) --get earliest dates
ELSE 0
END as SeqNum,
d.DocumentName,
d.CreatedWhen
d2.DocumentName as [DocUpdatedWithin2HR],
d2.UpdatedOn
Into #temp
FROM Documents d
JOIN Documents d2 ON d.DocumentID = d2.DocumentID
WHERE d2.UpdatedOn BETWEEN DATEADD(Hour,-2,d.CreatedWhen) --2 hours prior, 1 hour window
AND DATEADD(Second,-1,(DATEADD(Hour,-1,d.CreatedWhen))) --1 second shy of an hour
select distinct
DocumentName,
CreatedWhen,
DocUpdatedWithin2HR, --xml path this column later
UpdatedOn
from #temp where rn = 1 order by 1,3
答案 0 :(得分:0)
JOIN需要DocumentID。我很惊讶你没有得到语法错误。将JOIN更新为JOIN Documents d2 ON d.DocumentID = d2.DocumentID