知道这个问题的适当标题是什么。 我一直在努力解决这个问题。 我有两张桌子。 表1:保存对象ID,电子邮件日期和响应标志的记录 表2:保存对象ID的记录和响应日期。
我需要更新表1的响应标志,但由于每个表中有相同对象ID的多条记录,因此表2中的响应日期必须大于上一个电子邮件日期,但小于表中的下一个电子邮件日期2。
期望的结果
非常感谢任何帮助或建议。 提前感谢你。
答案 0 :(得分:1)
您可以通过加入执行此操作。我们将简单地查找Table2中与ObjectId匹配的行,并且具有最小的ResponseDate,即>我们的EmailDate使用具有最大的EmailDate的行<我们的ResponseDate。
UPDATE t1
SET t1.ResponseFlag = (CASE WHEN t2.ObjectId IS NOT NULL THEN 1 ELSE 0 END)
FROM Table1 t1
LEFT JOIN Table2 t2 ON t2.ObjectId = t1.ObjectId AND
t1.EmailDate = (SELECT MAX(EmailDate) FROM Table1
WHERE ObjectId = t1.ObjectId AND EmailDate < t2.ResponseDate) AND
t2.ResponseDate = (SELECT MIN(ResponseDate) FROM Table2
WHERE ObjectId = t1.ObjectId AND ResponseDate > t1.EmailDate)